尝试裁剪非常大的图像时,共享扩展名崩溃

时间:2019-05-03 08:56:01

标签: ios objective-c share-extension

我正在使用TOCropViewController裁剪图像。这在主应用程序中工作正常。问题是,当我尝试在共享扩展名中使用此库时,它不起作用。所谓不工作,是指当我尝试裁剪非常大的图像(在iPhone相机本身上捕获的图像)时,扩展名崩溃。根据库开发人员的说法,可能是由于尝试裁剪时的内存问题所致。因此,在将图像传递给图像裁切器之前,我尝试过缩小图像的尺寸。现在,我面临的问题是,这种缩小比例仅适用于少量图像,而对于其他图像则会崩溃。不知道为什么会这样。我用于缩小尺寸的代码是:

:placeholder-shown

有人能建议一种方法来缩小共享扩展中的图像以避免崩溃吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用WWDC2018的Apple推荐:

// Downsampling large images for display at smaller size 
func downsample(imageAt imageURL: URL, to pointSize: CGSize, scale: CGFloat) -> UIImage {  
     let imageSourceOptions = [kCGImageSourceShouldCache: false] as CFDictionary 

     let imageSource = CGImageSourceCreateWithURL(imageURL as CFURL, imageSourceOptions)! 

     let maxDimensionInPixels = max(pointSize.width, pointSize.height) * scale  
     let downsampleOptions =  [kCGImageSourceCreateThumbnailFromImageAlways: true,
     kCGImageSourceShouldCacheImmediately: true, 
     kCGImageSourceCreateThumbnailWithTransform: true,
     kCGImageSourceThumbnailMaxPixelSize: maxDimensionInPixels] as CFDictionary   
     let downsampledImage =   CGImageSourceCreateThumbnailAtIndex(imageSource, 0, downsampleOptions)!  
     return UIImage(cgImage: downsampledImage) 
}