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图像。我加入了他们这样的:

我不太确定它们中的哪一个被使用,但是当我在运行时检查图像时,尺寸是75x75 nint(native int)。这就是为什么我设置CGBitmapContext的高度和宽度为75.

我的问题是,通过此功能处理myImage后,质量变得非常差。如果我跳过这个过程,只使用myImage,质量非常好,但是我需要CGBitmapContext来为图像添加一些文本。

有没有人有任何想法是什么原因导致它质量差,我怎么能解决它?为了记录,我正在测试iPhone 6S。

您有多种误解。

让我们从图像大小开始。如果您的基本图像是100x100,@ 2x版本应该是200x200,因为它是分辨率的两倍。遵循这个模式,你的@ 3x应该是300x300。操作系统将根据设备的功能选择正确的操作系统。对于6S,它应该是@ 2x取决于你如何加载图像。

让我们继续您创建CGBitmapContext的方式。代码的来源正好包含您需要的内容,但是您已将其更改为修复值,现在想知道为什么您的图像是75x75。质量不好是正确的,因为系统现在正在调整原始图像的大小。

+0

感谢您的回答。 我看到我可能在图像大小上犯了一个错误,但是这与我的情况有关吗?我的应用程序是否正在读取我的100x100图像,因此预计会出现200x200的图像,或者在设备使用原始(@ 1x)时,我的@ 2x图像是否会在屏幕上看起来更小?另外,只要我调整大小,质量不应该像我的代码那样糟糕。我找到了一个我忘记发布的解决方法,即使调整大小,图像现在也显着更好。 – mathkid91