带有 ALAsset 缩略图的低清晰度

Posted

技术标签:

【中文标题】带有 ALAsset 缩略图的低清晰度【英文标题】:Low Clarity with ALAsset Thumbnail 【发布时间】:2011-12-02 08:16:09 【问题描述】:

我正在使用 ALAsset 库将照片库图像绑定到我的表格视图。 因此,每当我将 ALAsset 缩略图图像绑定为 TableView 单元格图像时,图像清晰度就会出现问题。它显示为低清晰度图像。 我已经从 AlAsset 创建了一个全分辨率图像并编写了缩略图生成方法,我将生成的图像设置为表格视图图像。 完成上述过程后,我在 Table-view 上获得了全分辨率图像缩略图。 但问题是第一次时间表查看图像绑定过程的性能(我在第一次绑定后使用缓存来绑定图像。所以第一次后性能会很快)。

请问,我怎样才能从 ALAsset 获取照片库全清晰度缩略图?

我在 MyTableView CellForRowIndexPath 中写了以下代码


UIImageView *importMediaSaveImage=[[[UIImageView alloc] init] autorelease];
 importMediaSaveImage.frame=CGRectMake(0, 0, 200,135 );

ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset)
  

   CGImageRef iref = [myasset thumbnail];


       if (iref) 

             importMediaSaveImage.image = [UIImage imageWithCGImage:iref];

              
    etc...

我试过下面的方法很费时间


 UIImageView *importMediaSaveImage=[[[UIImageView alloc] init] autorelease];
 importMediaSaveImage.frame=CGRectMake(0, 0, 200,135 );

ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset)
  

    ALAssetRepresentation *rep = [myasset defaultRepresentation];
       CGImageRef iref = [rep fullResolutionImage];
       UIImage *images;
       if (iref) 

        images = [UIImage imageWithCGImage:iref];  


         

       NSData *data = [self photolibImageThumbNailData:images];

       importMediaSaveImage.image = [UIImage imageWithData:data];

  etc....

photolibImageThumbNailData


-(NSData *)photolibImageThumbNailData:(UIImage *)image
     // begin an image context that will essentially "hold" our new image
     UIGraphicsBeginImageContext(CGSizeMake(200.0,135.0));

     // now redraw our image in a smaller rectangle.
     [image drawInRect:CGRectMake(0.0, 0.0, 200.0, 135.0)];


     // make a "copy" of the image from the current context
     UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
     UIGraphicsEndImageContext();



     // now grab the PNG representation of our image
     NSData *thumbData = UIImagePNGRepresentation(newImage);

     return thumbData;

谢谢。

【问题讨论】:

【参考方案1】:

我认为您在这里无能为力。因为这是我们从 ALAsset 获得的仅有的两个选项。您将不得不在质量或时间上做出妥协。如果您使用的是您自己存储在库中的图像,那么您可以在存储之前重新调整它们的大小,以提高处理速度。

【讨论】:

【参考方案2】:

您还应该尝试 [rep fullScreenImage] 以获得性能更好的表格视图,但图像质量比缩略图更好。

【讨论】:

【参考方案3】:

你可以使用

CGImageRef iref = [myasset aspectRatioThumbnail];

你的缩略图看起来好多了!

【讨论】:

以上是关于带有 ALAsset 缩略图的低清晰度的主要内容,如果未能解决你的问题,请参考以下文章

ALAsset - 稍后访问缩略图

ALAsset 缩略图有黑色背景

带有简单缩略图的衬垫合身

c#.net 生成清晰缩略图

如何从 iOS 中的 ALAsset 获取视频的缩略图?

有没有办法获得非平方的 ALAsset 缩略图?