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