0

我一直在使用这里的代码向我的 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(本机 int)。这就是我将 CGBitmapContext 高度和宽度设置为 75 的原因。

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

有谁知道是什么导致它质量不好,以及我该如何解决?作为记录,我正在 iPhone 6S 上进行测试。

4

1 回答 1

0

你有很多误解。

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

让我们继续讨论创建 CGBitmapContext 的方式。您的代码源包含您需要的内容,但您将其更改为固定值,现在想知道为什么您的图像是 75x75。糟糕的质量就来自于此,因为系统现在正在调整原始图像的大小。

于 2017-06-22T12:30:22.370 回答