防止图片重复下载方案,图像压缩保存与压缩显示

简介: 防止图片重复下载方案,图像压缩保存与压缩显示

图片作为超级吃流量的东东,如何避免它重复下载和占用大量内存打开图片呢?如何避免图片本地没有正在下载过程而重复下载呢?

图像压缩保存与压缩显示:通常使用UIImagePNGRepresentation的方式保存本地文件,它的好处是若该图片背景为透明可以保证它的背景仍旧透明,若使用UIImageJPEGRepresentation(image, 1)这种压缩保存的方式,保存的图像都是白背景,好处是图像质量可以改变,进而实现类似图像的压缩,但是压缩率不可控,不同图像压缩的比例不同。可以通过指定图像的边框来压缩图像显示在内存中,防止把一个很大的图像直接加载如内存,造成内存暴涨。如:UIImage *image = [AppManager resizeImage:[UIImage imageNamed:@”my_backgroud_up_6.png”] toSize:CGSizeMake(WINDOW_WIDTH, 64) scale:1];

图像压缩的方法例子:

//change size
+ (UIImage *)resizeImage:(UIImage *)image toSize:(CGSize)scaleSize scale:(CGFloat)scale
{

    CGSize originalSize = image.size;

    CGSize newSize;
    if (scale == 1) {
        newSize = CGSizeMake(scaleSize.width, scaleSize.height);
    }
    else {
        newSize = CGSizeMake(originalSize.width * scale, originalSize.height * scale);
    }

    CGFloat newScale = scale;


    while (newScale > 0.1 && (newSize.width > scaleSize.width || newSize.height > scaleSize.height)) {
        newScale -= 0.05;
        newSize = CGSizeMake(newSize.width * scale, newSize.height * scale);
    }



    // Scale the original image to match the new size.
    UIGraphicsBeginImageContext(newSize);
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
    UIImage* compressedImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();


    return compressedImage;
}


//1、生成指定尺寸的图片
+ (UIImage *)compressImage:(UIImage *)imgSrc :(CGSize)size
{
    UIGraphicsBeginImageContext(size);
    CGRect rect = {{0,0}, size};
    [imgSrc drawInRect:rect];
    UIImage *compressedImg = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return compressedImg;
}


//2、生成指定大小图片
+(UIImage *)Rarimage:(UIImage *)orginImage
  compressionQuality:(float)compressionQuality
{
    NSData *imageData = [[NSData alloc] initWithData:UIImageJPEGRepresentation(orginImage, compressionQuality)];
    //如果图片小于50k 且尺寸>500直接输出 否则压缩
    if (imageData.length>50000)
    {
        UIImage *image = [UIImage imageWithData:imageData];
        //如果图片尺寸过大 尺寸等比例压缩
        if (image.size.height>500 ||image.size.width>500)
        {
            UIGraphicsBeginImageContext(CGSizeMake(image.size.width * 0.3, image.size.height * 0.3));
            [image drawInRect:CGRectMake(0, 0, image.size.width * 0.3, image.size.height * 0.3)];
            image = UIGraphicsGetImageFromCurrentImageContext();
            UIGraphicsEndImageContext();
           // NSData *imageData2 = [[NSData alloc] initWithData:UIImageJPEGRepresentation(image, compressionQuality)];
        }
        return image;

    }else
    {
        return orginImage;
    }
    return nil;
}

这个是我写的代码关于这个问题的解决方案及流程图。

刷新新订单时,订单有商家组Icon但是本地没有商家组Icon,异步下载商家组Icon,下载期间暂时不显示商家组Icon(也可以显示下载中默认商家组Icon),下载成功显示商家组Icon,下载失败不显示商家组Icon(也可以显示下载中默认商家组Icon)。当一次刷到多个订单,有多个订单有商家组Icon,这些商家组Icon有重复的,有些商家组Icon本地不存在,那么下载商家组Icon时,保证相同的商家组Icon不重复下载。

目录
相关文章
|
6月前
|
机器学习/深度学习 开发工具 计算机视觉
视觉智能平台常见问题之视频文件较大上传时可以分段上传或者切割视频如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
|
6月前
Word里的图片无损保存
Word里的图片无损保存
74 1
|
5月前
|
存储 Python
python实现图片与视频转换:将视频保存为图片,将批量图片保存为视频
python实现图片与视频转换:将视频保存为图片,将批量图片保存为视频
|
4月前
分享:根据批量的图片文件名,如何在电脑里一次性查找多张图片,复制并保存到新的文件夹
本文介绍了一款批量文件处理软件,用于快速查找和管理大量图片。通过下载链接提供软件,用户可执行以下操作:搜索并复制特定文件名的图片,从大型图库中筛选目标图片至指定位置,或按文件名批量删除图片。软件支持完全匹配、模糊查找和格式限定等查找方式。使用后能显著提升图片整理效率,节省时间。
611 3
|
4月前
|
编解码 定位技术
【工具分享】如何批量获取图片详细信息,如何把图片的属性信息包括文件路径、文件名、面积尺寸、创建日期、修改日期、水平垂直分辨率、文件大小等图片信息批量提取exel表格中
本文介绍了如何批量提取图片的属性数据到Excel,包括文件名、尺寸、面积、分辨率、GPS信息、创建和修改日期。适合需要处理大量图片信息的工作场景。支持批量导入图片,一键提取各项信息,并能直接导出为表格。
678 0
|
6月前
|
文字识别 测试技术 数据安全/隐私保护
案例:批量区域识别内容重命名,批量识别扫描PDF区域内容识别重命名,批量识别图片区域内容重命名图片修改图片名字,批量识别图片区域文字并重命名,批量图片部分识别内容重命文件,PDF区域内容提取重命名
该内容介绍了如何使用区域识别重命名软件高效整理图片,例如将图片按时间及内容重命名,适用于简历、单据等识别。文中提供了软件下载链接(百度云盘和腾讯网盘),并列出软件使用的几个关键条件,包括文字清晰、文件名长度限制等。示例展示了银行单据和公司工作单据的识别情况。文章还提及OCR技术在图片文字识别中的应用,强调了识别率、误识率和用户友好性等评估指标。如有类似需求,读者可留言或下载软件测试,并提供图片以获取定制的识别方案。
324 2
|
6月前
|
编解码 算法 UED
效地减小图片文件的大小
【4月更文挑战第26天】效地减小图片文件的大小
54 6
|
6月前
|
监控 算法 数据安全/隐私保护
使用Python实现批量文件的压缩处理
使用Python实现批量文件的压缩处理
90 0
【图片操作】混合图片
混合图片的方式有很多种,我们先来看看如何通过混合图片的通道来实现图片混合。
152 0