如何在iOS中将输出(UIView)导出为指定大小的图像

Posted

技术标签:

【中文标题】如何在iOS中将输出(UIView)导出为指定大小的图像【英文标题】:How to export the output (UIView) to an image of specified size in iOS 【发布时间】:2020-06-18 07:16:48 【问题描述】:

我将 UIView 保存为图像。当它以与视图相同的大小保存时,保存的图像质量很好。但我希望图像是我指定的尺寸但质量很好。

        UIGraphics.BeginImageContextWithOptions(ZoomLayout.Frame.Size, false, 1);
        this.ZoomLayout.Layer.RenderInContext(UIGraphics.GetCurrentContext());
        var imageFromContext = UIGraphics.GetImageFromCurrentImageContext();
        UIImage saveImage = imageFromContext;

ZoomLayout 是我需要与其子视图一起保存为图像的 UIView。上面的代码工作正常。但我希望保存的图像大小为(300x500)。 如果我指定如下

         UIGraphics.BeginImageContextWithOptions(new CGSize(300,500) , false, 1);

保存的图像质量不高。如何做到这一点?

【问题讨论】:

【参考方案1】:

BeginImageContextWithOptions 方法的第三个参数是屏幕的比例。所以当你设置为1时,它会在一些高屏幕密度(PPi)下质量下降。

其实你需要设置成当前设备的比例,比如

UIGraphics.BeginImageContextWithOptions(ZoomLayout.Frame.Size, false, UIScreen.MainScreen.Scale);

【讨论】:

图像质量已达到,但图像元数据 ExifImageWidth 和 ExifImageheight 不是我指定的。我给了 UIGraphics.BeginImageContextWithOptions(new CGSize(572,860), false, UIScreen.MainScreen.Scale);但是保存的图像大小是(1536,1688)。我希望保存的图像大小为 (572,860) 你是如何转换的?我检查了 UIImage 的数据,它的大小是我们设置的值。 UIImage 大小是我设置的唯一值。但是保存后,当我检查保存的图像元数据时,高度和宽度会有所不同 你能分享你的样品,以便我可以测试它。 查看本站metapicz.com/#landing......Height保存的图片,保存图片的宽度会与指定的不同

以上是关于如何在iOS中将输出(UIView)导出为指定大小的图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 中将 UIView 转换为 PDF?

如何在 XCODE 中将 UIView 水平分成三个大小均匀的子视图?

如何在真实设备上的 iOS 10 中将渐变应用到 UIView

如何在 iOS Swift 中将不同的角半径应用于 UIView 的不同角?

如何在 ios7 中将 UIView 对象添加到 self.view.window?

如何在 iOS 中将 UIView 添加到 UIScrollView 中(具有动态内容的视图)