美文网首页
IOS - 图片压缩处理方案

IOS - 图片压缩处理方案

作者: 囧rg | 来源:发表于2017-01-05 19:50 被阅读82次

在图片压缩的过程中,大家最先想到的就是使用UIImageJPEGRepresentation方法,但是此方法会涉及到内存不能释放的问题。

解决方案就是:

**
 *  根据给定的宽度,计算高度,重新绘制图片
 */
+(UIImage *) imageCompressForImage:(UIImage *)sourceImage targetWidth:(CGFloat)defineWidth
{
    UIImage *newImage = nil;
    CGSize imageSize = sourceImage.size;
    CGFloat width = imageSize.width;
    CGFloat height = imageSize.height;
    
    CGFloat targetWidth = defineWidth;
    CGFloat targetHeight = height / (width / targetWidth);
    CGSize size = CGSizeMake(targetWidth, targetHeight);
    CGFloat scaleFactor = 0.0;
    CGFloat scaledWidth = targetWidth;
    CGFloat scaledHeight = targetHeight;
    CGPoint thumbnailPoint = CGPointMake(0.0, 0.0);
    if(CGSizeEqualToSize(imageSize, size) == NO){
        CGFloat widthFactor = targetWidth / width;
        CGFloat heightFactor = targetHeight / height;
        if(widthFactor > heightFactor){
            scaleFactor = widthFactor;
        }
        else{
            scaleFactor = heightFactor;
        }
        scaledWidth = width * scaleFactor;
        scaledHeight = height * scaleFactor;
        if(widthFactor > heightFactor){
            thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5;
        }else if(widthFactor < heightFactor){
            thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;
        }
    }
    UIGraphicsBeginImageContext(size);
    CGRect thumbnailRect = CGRectZero;
    thumbnailRect.origin = thumbnailPoint;
    thumbnailRect.size.width = scaledWidth;
    thumbnailRect.size.height = scaledHeight;
    
    [sourceImage drawInRect:thumbnailRect];
    
    newImage = UIGraphicsGetImageFromCurrentImageContext();
    if(newImage == nil){
        NSLog(@"scale image fail");
    }
    
    UIGraphicsEndImageContext();
    return newImage;
}

注意 : 在选择多张图片的时候,记得要及时的清理集合中的数据

 @autoreleasepool {
        [arr removeAllObjects];
        arr = nil;
    }

相关文章

  • iOS 图片压缩方法

    iOS 图片压缩方法 更多图片处理方法见图片组件 BBWebImage iOS 图片压缩方法 两种图片压缩方法 两...

  • [iOS] iOS 中使用 UIImage 的注意点

    iOS 处理图片的一些小 Tip App图片压缩裁剪原理和上传方案,以及那些有趣的事儿...

  • IOS - 图片压缩处理方案

    在图片压缩的过程中,大家最先想到的就是使用UIImageJPEGRepresentation方法,但是此方法会涉及...

  • imageView的处理

    图片的处理参见谈谈 iOS 中图片的解压缩

  • iOS图片比例压缩上传处理方案

    先调整分辨率,分辨率可以自己设定一个值,大于的就缩小到这分辨率,小余的就保持原本分辨率。然后在判断图片数据大小,传...

  • iOS图片压缩方案

    一、概述 “压” 是指文件体积变小,但是像素数不变,长宽尺寸不变,那么质量可能下降。(图片压完之后,占用内存的bi...

  • ios图片压缩处理

    平时开发中图片的压缩处理一般包括所占内存大小的处理和尺寸的处理,内存方面的处理通常直接调用UIImageJPEGR...

  • iOS 图片压缩处理

    1、确图片的压缩的概念: “压” 是指文件体积变小,但是像素数不变,长宽尺寸不变,那么质量可能下降。“缩” 是指文...

  • iOS 图片压缩处理

    1、确图片的压缩的概念: “压” 是指文件体积变小,但是像素数不变,长宽尺寸不变,那么质量可能下降。“缩” 是指文...

  • iOS图片压缩处理

    首先,我们必须明确图片的压缩其实是两个概念: “压” 是指文件体积变小,但是像素数不变,长宽尺寸不变,那么质量可能...

网友评论

      本文标题:IOS - 图片压缩处理方案

      本文链接:https://www.haomeiwen.com/subject/gfnzvttx.html