首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在操作扩展上处理图像时的崩溃应用程序: iOS 14.0,xCode 12.0

在操作扩展上处理图像时的崩溃应用程序: iOS 14.0,xCode 12.0
EN

Stack Overflow用户
提问于 2020-09-20 17:25:40
回答 1查看 198关注 0票数 0

当我处理在动作扩展中的图像时,我遇到了问题:

当我将图像设置为UIPasteboard或处理图像时,它就崩溃了

代码语言:javascript
复制
UIPasteboard.general.image = image
 or
let dataCompress = image.jpegData(compressionQuality: value)!

其信息是:

代码语言:javascript
复制
Thread 2: EXC_RESOURCE RESOURCE_TYPE_MEMORY (limit=16 MB, unused=0x0)

我的环境

xCode 12.0,iPhone11Pro iOS 14.0

有人找到解决办法了吗?非常感谢。

EN

回答 1

Stack Overflow用户

发布于 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)

代码语言:javascript
复制
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)
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63981767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档