iOS Xamarin中的UIImage质量不佳

时间:2017-06-20 21:29:13

标签: ios xamarin xamarin.ios uiimage cgbitmapcontext

我一直在使用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图片。我已经像这样添加了它们:

  • MyImage.png(100x100像素)
  • MyImage@2.png(150x150像素)
  • MyImage@3.png(200x200像素)

我不确定使用了哪一个,但是当我在运行时检查图像时,大小是75x75 nint(native int)。这就是我将CGBitmapContext高度和宽度设置为75的原因。

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

有没有人知道是什么导致它质量不好,以及我如何解决它?为了记录,我正在测试iPhone 6S。

1 个答案:

答案 0 :(得分:0)

你有多重误解。

让我们从图像大小开始。如果基本图像是100x100,则@ 2x版本应为200x200,因为它的分辨率是其两倍。遵循此架构,您的@ 3x应为300x300。操作系统将根据您设备的功能选择正确的操作系统。使用6S时,它应该是@ 2x,具体取决于您加载图像的方式。

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