ALAsset 缩略图有黑色背景

Posted

技术标签:

【中文标题】ALAsset 缩略图有黑色背景【英文标题】:ALAsset thumbnail have black background 【发布时间】:2013-04-10 14:49:44 【问题描述】:

我通过使用ALAssetsLibrary 类编写了自己的图像选择器类。

几乎一切都很好,但有些图像缩略图具有黑色背景,而实际图像是透明/alpha 通道。

如何解决这个问题?

这是我从 ALAsset 缩略图属性加载图像的枚举块:

[reversedItems enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^(void) 
        UIImage *image = [UIImage imageWithCGImage:[[_assets objectAtIndex:allItems - idx] thumbnail]];

        dispatch_async(dispatch_get_main_queue(), ^
            GridView *gridView = (GridView *)obj;
            gridView.imageView.image = image;
        );
    );

];

【问题讨论】:

有同样的问题,但是尝试在ios设备上启动应用程序,在设备上你应该看不到黑色背景,好像它只出现在模拟器中 实际上我在设备上看到了那个背景。 查看模拟器文件系统并找到缩略图,看看它们保存在哪种格式。据我所知,它是 jpeg 或其他不支持 alpha 通道的格式。我知道专辑列表中的缩略图是 tiff 并且没有 alpha 通道。 首先我不在模拟器上测试;第二,即使我在模拟器上测试在哪里可以找到这些缩略图。 【参考方案1】:

如果您使用 fullScreenImage 属性,有一个解决方法,它的执行速度应该会变慢,但应该可以正常工作。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) 
        ALAsset *asset = [_assets objectAtIndex:allItems - idx];
        UIImage *smallImage = [UIImage imageWithCGImage:[asset thumbnail]];
        UIImage *image;

        CGSize size = [smallImage size];
        CGRect box = CGRectMake(0, 0, size.width, size.height);


        UIGraphicsBeginImageContext(size);
        CGContextRef context = UIGraphicsGetCurrentContext();

        CGContextSetFillColorWithColor(context, [[UIColor clearColor] CGColor]);
        CGContextFillRect(context, box);

        CGContextTranslateCTM(context, 0.0, size.height);
        CGContextScaleCTM(context, 1.0, -1.0);

        CGContextDrawImage(context, box, [[asset defaultRepresentation] fullScreenImage]);

        image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();


        dispatch_async(dispatch_get_main_queue(), ^
            TTGridView *gridView = (TTGridView *)obj;
            gridView.imageView.image = image;
        );
    );

【讨论】:

以上是关于ALAsset 缩略图有黑色背景的主要内容,如果未能解决你的问题,请参考以下文章

带有黑色背景的 alpha 图像绘制其他白色...?

golang https://www.v2ex.com/t/303711基于微信显示png图片缩略图背景为白色,放大后背景图为黑色的Bug

php Imagemagick jpg 黑色背景

带有白色背景且未集中的 PHP 缩略图

IDEA中怎么设置黑色或白色背景

Qt 5.1.1 中设置背景,背景为黑色,怎么解决?