当我处理在动作扩展中的图像时,我遇到了问题:
当我将图像设置为UIPasteboard或处理图像时,它就崩溃了
UIPasteboard.general.image = image
or
let dataCompress = image.jpegData(compressionQuality: value)!其信息是:
Thread 2: EXC_RESOURCE RESOURCE_TYPE_MEMORY (limit=16 MB, unused=0x0)我的环境
xCode 12.0,iPhone11Pro iOS 14.0
有人找到解决办法了吗?非常感谢。
发布于 2020-09-21 14:55:58
我认为您需要调整图像的大小,因为它显示了图像大小不大于16 MB的错误,请使用此扩展来调整图像的质量。
设newImage = image?.resizeImage(targetSize: CGSize(宽度: 400,高度: 400))让imageData = newImage?.jpeg(.lowest) //将此图像发送到UIPasteboard.general.image
线程2: EXC_RESOURCE RESOURCE_TYPE_MEMORY (limit=16 MB,unused=0x0)
extension UIImage {
func resizeImage(targetSize: CGSize) -> UIImage? {
let size = self.size
let widthRatio = targetSize.width / size.width
let heightRatio = targetSize.height / size.height
let newSize = widthRatio > heightRatio ? CGSize(width: size.width * heightRatio, height: size.height * heightRatio) : CGSize(width: size.width * widthRatio, height: size.height * widthRatio)
let rect = CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height)
UIGraphicsBeginImageContextWithOptions(newSize, false, 1.0)
self.draw(in: rect)
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage?
}
}
public extension UIImage {
enum JPEGQuality: CGFloat {
case lowest = 0
case low = 0.25
case medium = 0.5
case high = 0.75
case highest = 1
}
/// Returns the data for the specified image in JPEG format.
/// If the image object’s underlying image data has been purged,
///calling this function forces that data to be reloaded into memory.
/// - returns: A data object containing the JPEG data,
///or nil if there was a problem generating the data.
///This function may return nil if the image has no data or
///if the underlying CGImageRef contains data in an unsupported bitmap format.
func jpeg(_ jpegQuality: JPEGQuality) -> Data? {
return self.jpegData(compressionQuality: jpegQuality.rawValue)
}
}https://stackoverflow.com/questions/63981767
复制相似问题