CIImage
是 Core Image 框架中的一个类,用于表示图像数据。UIImage
是 UIKit 框架中的一个类,用于在 iOS 应用程序中显示和处理图像。将 CIImage
转换为 UIImage
并保存为 JPG 文件时,可能会遇到文件大小过大的问题。
CIImage
的分辨率很高,保存为 JPG 文件时会占用更多空间。可以通过调整图像质量和分辨率来减小 JPG 文件的大小。以下是一个示例代码,展示如何将 CIImage
转换为 UIImage
并保存为较小的 JPG 文件:
import UIKit
import CoreImage
func saveCIImageAsJPG(_ ciImage: CIImage, quality: CGFloat = 0.75, completion: @escaping (URL?) -> Void) {
let context = CIContext(options: nil)
guard let cgImage = context.createCGImage(ciImage, from: ciImage.extent) else {
completion(nil)
return
}
let image = UIImage(cgImage: cgImage)
guard let data = image.jpegData(compressionQuality: quality) else {
completion(nil)
return
}
let url = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("image.jpg")
do {
try data.write(to: url)
completion(url)
} catch {
completion(nil)
}
}
// 示例调用
let ciImage = // 获取你的 CIImage 对象
saveCIImageAsJPG(ciImage, quality: 0.5) { url in
if let url = url {
print("JPG 文件保存成功: \(url)")
} else {
print("JPG 文件保存失败")
}
}
CIContext
将 CIImage
转换为 CGImage
。CGImage
创建 UIImage
对象。UIImage
的 jpegData(compressionQuality:)
方法设置图像质量,值范围为 0.0 到 1.0,数值越小,文件越小。通过调整图像质量和分辨率,可以有效减小 JPG 文件的大小,同时保持图像质量在可接受范围内。
领取专属 10元无门槛券
手把手带您无忧上云