gpt4 book ai didi

ios - MonoTouch 将带有 alpha 的彩色 UIImage 转换为灰度和模糊?

转载 作者:技术小花猫 更新时间:2023-10-29 11:18:21 27 4
gpt4 key购买 nike

我正在尝试找到一种方法,用于从彩色 PNG 和 alpha 生成模糊的灰度 UIImage。 ObjC 中有配方,但 MonoTouch 没有绑定(bind) CGRect 函数,所以不确定如何执行此操作。有什么想法吗?

这是灰度的一个 ObjC 示例:

(UIImage *)convertImageToGrayScale:(UIImage *)image
{
// Create image rectangle with current image width/height
CGRect imageRect = CGRectMake(0, 0, image.size.width, image.size.height);

// Grayscale color space
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();

// Create bitmap content with current image size and grayscale colorspace
CGContextRef context = CGBitmapContextCreate(nil, image.size.width, image.size.height, 8, 0, colorSpace, kCGImageAlphaNone);

// Draw image into current context, with specified rectangle
// using previously defined context (with grayscale colorspace)
CGContextDrawImage(context, imageRect, [image CGImage]);

// Create bitmap image info from pixel data in current context
CGImageRef imageRef = CGBitmapContextCreateImage(context);

// Create a new UIImage object
UIImage *newImage = [UIImage imageWithCGImage:imageRef];

// Release colorspace, context and bitmap information
CGColorSpaceRelease(colorSpace);
CGContextRelease(context);
CFRelease(imageRef);

// Return the new grayscale image
return newImage;
}

最佳答案

Monotouch does not bind the CGRect functions so not sure how to do this.

当使用 MonoTouch 时,CGRect 被映射到 RectangleF。存在许多扩展方法,它们应该映射到 GCRect 提供的每个函数。使用它们移植 ObjectiveC 代码应该没有任何问题。

如果缺少某些内容,请填写错误报告@ http://bugzilla.xamarin.com我们会尽快修复它(并尽可能提供解决方法)。

There are recipes out there in ObjC but MonoTouch

如果您有链接,请编辑您的问题并添加它们。这样可以更轻松地帮助您 :)

更新

这是您示例的逐行 C# 翻译。它似乎对我有用(而且在我看来它比 Objective-C 更容易;-)

    UIImage ConvertToGrayScale (UIImage image)
{
RectangleF imageRect = new RectangleF (PointF.Empty, image.Size);
using (var colorSpace = CGColorSpace.CreateDeviceGray ())
using (var context = new CGBitmapContext (IntPtr.Zero, (int) imageRect.Width, (int) imageRect.Height, 8, 0, colorSpace, CGImageAlphaInfo.None)) {
context.DrawImage (imageRect, image.CGImage);
using (var imageRef = context.ToImage ())
return new UIImage (imageRef);
}
}

关于ios - MonoTouch 将带有 alpha 的彩色 UIImage 转换为灰度和模糊?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8577567/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com