ios - 在 iOS 中处理大图像

标签 ios uiimage thumbnails photo cgbitmapcontext

我想让用户选择一张照片,而不限制大小,然后对其进行编辑。

我的想法是创建一个与屏幕大小相同的大照片的缩略图进行编辑,然后,当编辑完成后,使用大照片进行与缩略图相同的编辑。

当我使用 UIGraphicsBeginImageContext 创建缩略图时,会导致内存问题。

我知道由于硬件限制很难直接编辑整个大图像,所以我想知道是否有一种方法可以在没有内存问题的情况下将大图像下采样到小于 2048*2048?

我发现有一个 BitmapFactory 类,它有一个 inSampleSize 选项,可以在 Android 平台上对照片进行下采样。如何在 iOS 上完成此操作?

最佳答案

您需要使用 UIImage 处理图像加载,它实际上不会将图像加载到内存中,然后以您想要的结果图像的大小创建一个位图上下文(因此这将是使用的内存量)。然后,您需要使用 CGImageCreateWithImageInRect 从原始图像(这是部分图像数据加载到内存中的位置)迭代多次,使用 CGContextDrawImage 将图 block 绘制到目标上下文中>.

参见 this sample code from Apple .

关于ios - 在 iOS 中处理大图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16043204/

相关文章:

Iphone 将 IplImage 转换为 UIImage 并返回导致旋转

ios - 如何从 UIImagePickerController 检索 PHAsset

javascript - 为移动设备禁用 velocity.js 动画

iphone - 将图像存储在数组中

ios - 从 Swift 分配的 Objective-C block 在分配后为零

ios - 如何使用从类函数编辑环境对象?

ios - 是否可以从我的 pod 的框架资源中的 *.pdf 文件创建 UIImage?

html - 如何提供独立于文件类型的缩略图形式的文档预览

javascript - 在 iOS Safari 中播放音频时如何设置缩略图?

css - 将 OneDrive 缩略图的比例保持在方框内