在照片編輯器螢屏中,我有 imageview 和背景影像,在 imageview 之上我添加了文本(標簽)、貼紙(影像)等元素,現在對于包含添加到 imageview 的所有元素的最終影像,我正在獲取影像從下面的代碼
clipRect 是 imageview 中背景影像的 rect,imageview 中的影像是 aspectfit
下面是 UIView 擴展中的代碼,它具有在視圖外生成影像的功能。
自我 == uiview
let op_format = UIGraphicsImageRendererFormat()
op_format.scale = 1.0
let renderer = UIGraphicsImageRenderer(bounds: CGRect(origin: clipRect!.origin, size: outputSize), format: op_format)
let originalBound = self.bounds
self.bounds = CGRect(origin: clipRect!.origin, size: clipRect!.size)
var finalImage = renderer.image { ctx in
self.drawHierarchy(in: CGRect(origin: self.bounds.origin, size: outputSize), afterScreenUpdates: true)
}
self.bounds = CGRect(origin: originalBound.origin, size: originalBound.size)
這里的問題是與原始背景影像相比,最終影像質量非常差。
uj5u.com熱心網友回復:
不要將比例設定UIGraphicsImageRendererFormat為 1。這會強制輸出影像為 @1x(非視網膜)。對于大多數(所有?)iOS 設備,這將導致解析度損失 2 倍或 3 倍。將 UIGraphicsImageRendererFormat 的縮放值保留為默認值。
uj5u.com熱心網友回復:
你也可以截圖
// Convert a uiview to uiimage
func captureView() -> UIImage {
// Gradually increase the number for high resolution.
let scale = 1.0
UIGraphicsBeginImageContextWithOptions(bounds.size, opaque, scale)
layer.renderInContext(UIGraphicsGetCurrentContext()!)
let image:UIImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/313531.html
