调整一个UIImage的大小而不把它完全载入内存?

我正在开发一个应用程序,在这个应用程序中,用户可能会尝试加载非常大的图像。这些图片首先在一个表格视图中以缩略图的形式显示。我原来的代码会在大图片上崩溃,所以我正在重写它,首先将图片直接下载到磁盘上。

有没有已知的方法来调整磁盘上图像的大小,而不完全将其加载到内存中,通过 UIImage? 我目前正在尝试使用分类来调整尺寸,在 UIImage 详见 此处但我的应用程序在尝试缩略一个非常大的图像时崩溃(例如,。这个 – 警告,巨大的图像)。)

解决方案:

你应该看看ImageIO.framework中的CGImageSource,但它只在iOS 4.0中可用。

快速示例 。

-(UIImage*)resizeImageToMaxSize:(CGFloat)max path:(NSString*)path
{
    CGImageSourceRef imageSource = CGImageSourceCreateWithURL((CFURLRef)[NSURL fileURLWithPath:path], NULL);
    if (!imageSource)
        return nil;

    CFDictionaryRef options = (CFDictionaryRef)[NSDictionary dictionaryWithObjectsAndKeys:
        (id)kCFBooleanTrue, (id)kCGImageSourceCreateThumbnailWithTransform,
        (id)kCFBooleanTrue, (id)kCGImageSourceCreateThumbnailFromImageIfAbsent,
        (id)@(max),
        (id)kCGImageSourceThumbnailMaxPixelSize,
        nil];
    CGImageRef imgRef = CGImageSourceCreateThumbnailAtIndex(imageSource, 0, options);

    UIImage* scaled = [UIImage imageWithCGImage:imgRef];

    CGImageRelease(imgRef);
    CFRelease(imageSource);

    return scaled;
}

给TA打赏
共{{data.count}}人
人已打赏
未分类

UWP XAML自定义命令栏切换按钮。

2022-9-23 11:11:49

未分类

避免全局变量就像把每个变量都放在结构或类中那么简单吗?

2022-9-23 11:12:03

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索