我一直在使用the code from here为我的UIImage添加一些文字,但是图像的质量非常糟糕。我已经将代码缩小了很多,对此:
public UIImage EditImage(UIImage myImage)
{
using (CGBitmapContext ctx = new CGBitmapContext(IntPtr.Zero, 75, 75, 8, 4 * 75, CGColorSpace.CreateDeviceRGB(), CGImageAlphaInfo.PremultipliedFirst))
{
ctx.DrawImage(new CGRect(0, 0, 75, 75), myImage.CGImage);
return UIImage.FromImage(ctx.ToImage());
}
}
MyImage是一张PNG图片。我已经像这样添加了它们:
我不确定使用了哪一个,但是当我在运行时检查图像时,大小是75x75 nint(native int)。这就是我将CGBitmapContext高度和宽度设置为75的原因。
我的问题是,在通过此功能处理myImage后,质量变得非常差。如果我跳过这个过程并且只使用myImage,那么质量非常好,但是我需要CGBitmapContext来为图像添加一些文本。
有没有人知道是什么导致它质量不好,以及我如何解决它?为了记录,我正在测试iPhone 6S。
答案 0 :(得分:0)
你有多重误解。
让我们从图像大小开始。如果基本图像是100x100,则@ 2x版本应为200x200,因为它的分辨率是其两倍。遵循此架构,您的@ 3x应为300x300。操作系统将根据您设备的功能选择正确的操作系统。使用6S时,它应该是@ 2x,具体取决于您加载图像的方式。
让我们继续您创建CGBitmapContext的方式。代码的来源恰好包含了您的需求,但您更改了它以修复值,现在想知道为什么您的图像是75x75。质量不好就是因为系统正在调整原始图像的大小。