ios – 从ALAssetRepresentation生成自定义缩略图

ios – 从ALAssetRepresentation生成自定义缩略图,第1张

概述我的主要问题是我需要获取ALAsset对象的缩略图. 我尝试了很多解决方案,搜索堆栈溢出了几天,由于这些限制,我发现的所有解决方案对我来说都不工作: >我不能使用默认的缩略图,因为它太少了; >我不能使用全屏或全分辨率图像,因为我有很多图像在屏幕上; >我不能使用UIImage或UIImageView来调整大小,因为这些负载 全分辨率图像 >我无法加载内存中的图像,我正在使用20Mpx的图像; > 我的主要问题是我需要获取ALAsset对象的缩略图.

我尝试了很多解决方案,搜索堆栈溢出了几天,由于这些限制,我发现的所有解决方案对我来说都不工作:

>我不能使用默认的缩略图,因为它太少了;
>我不能使用全屏或全分辨率图像,因为我有很多图像在屏幕上;
>我不能使用UIImage或UIImageVIEw来调整大小,因为这些负载
全分辨率图像
>我无法加载内存中的图像,我正在使用20Mpx的图像;
>我需要创建200×200 px版本的原始资源来加载屏幕;

这是我的代码的最后一次迭代:

#import <AssetsLibrary/ALAsset.h>#import <ImageIO/ImageIO.h>   // ...ALAsset *asset;// ...ALAssetRepresentation *assetRepresentation = [asset defaultRepresentation];NSDictionary *thumbnailOptions = [NSDictionary dictionaryWithObjectsAndKeys:    (ID)kcfBooleanTrue,kCGImageSourceCreatethumbnailWithtransform,(ID)kcfBooleanTrue,kCGImageSourceCreatethumbnailFromImageAlways,(ID)[NSNumber numberWithfloat:200],kCGImageSourcethumbnailMaxPixelSize,nil];CGImageRef generatedthumbnail = [assetRepresentation CGImageWithOptions:thumbnailOptions];UIImage *thumbnailImage = [UIImage imageWithCGImage:generatedthumbnail];

问题是,所产生的CGImageRef既不是通过方向变换的,也不是指定的最大像素大小;

我也试图找到一种使用CGImageSource调整大小的方法,但是:

>资源网址不能用于CGImageSourceCreateWithURL:
>我无法从ALAsset或ALAssetRepresentation中提取一个CGDataProvIDerRef以用于CGImageSourceCreateWithDataProvIDer:;
> CGImageSourceCreateWithData:要求我将fullResolution或全屏资源存储在内存中才能工作.

我错过了什么吗?

有没有另一种获取ALAsset或ALAssetRepresentation的缩略图的方法,我失踪了?

提前致谢.

解决方法 您可以使用CGImageSourceCreatethumbnailAtIndex从潜在的大型图像源创建一个小图像.您可以使用ALAssetRepresentation的getBytes:fromOffset:length:error:method从磁盘加载映像,并使用它来创建CGImageSourceRef.

然后,您只需要将kCGImageSourcethumbnailMaxPixelSize和kCGImageSourceCreatethumbnailFromImageAlways选项传递给您创建的图像源的CGImageSourceCreatethumbnailAtIndex,并且它将为您创建一个较小的版本,而无需将庞大的版本加载到内存中.

我写了一个blog post和gist这种技术充分发挥.

总结

以上是内存溢出为你收集整理的ios – 从ALAssetRepresentation生成自定义缩略图全部内容,希望文章能够帮你解决ios – 从ALAssetRepresentation生成自定义缩略图所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1113448.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存