如何在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)导出为指定大小的图像的主要内容,如果未能解决你的问题,请参考以下文章
如何在 XCODE 中将 UIView 水平分成三个大小均匀的子视图?
如何在真实设备上的 iOS 10 中将渐变应用到 UIView
如何在 iOS Swift 中将不同的角半径应用于 UIView 的不同角?