UIImage iOS中的质量差Xamarin
问题描述:
我一直在使用the code from here添加一些文字到我的UIImage,但图像质量变得非常糟糕。我已经缩减了很多代码,至此:UIImage iOS中的质量差Xamarin
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图像。我加入了他们这样的:
- MyImage.png(100x100像素),
- [email protected](150×150像素)
- [email protected](200x200像素)
我不太确定它们中的哪一个被使用,但是当我在运行时检查图像时,尺寸是75x75 nint(native int)。这就是为什么我设置CGBitmapContext的高度和宽度为75.
我的问题是,通过此功能处理myImage后,质量变得非常差。如果我跳过这个过程,只使用myImage,质量非常好,但是我需要CGBitmapContext来为图像添加一些文本。
有没有人有任何想法是什么原因导致它质量差,我怎么能解决它?为了记录,我正在测试iPhone 6S。
答
您有多种误解。
让我们从图像大小开始。如果您的基本图像是100x100,@ 2x版本应该是200x200,因为它是分辨率的两倍。遵循这个模式,你的@ 3x应该是300x300。操作系统将根据设备的功能选择正确的操作系统。对于6S,它应该是@ 2x取决于你如何加载图像。
让我们继续您创建CGBitmapContext的方式。代码的来源正好包含您需要的内容,但是您已将其更改为修复值,现在想知道为什么您的图像是75x75。质量不好是正确的,因为系统现在正在调整原始图像的大小。
感谢您的回答。 我看到我可能在图像大小上犯了一个错误,但是这与我的情况有关吗?我的应用程序是否正在读取我的100x100图像,因此预计会出现200x200的图像,或者在设备使用原始(@ 1x)时,我的@ 2x图像是否会在屏幕上看起来更小?另外,只要我调整大小,质量不应该像我的代码那样糟糕。我找到了一个我忘记发布的解决方法,即使调整大小,图像现在也显着更好。 – mathkid91