有关于图片压缩大小--尺寸裁剪 和 压缩系数

最近在做一些图片展示的页面,对于图片大小压缩 可以从

UIImageJPEGRepresentation(newImage, 0.5);第一个系数 是对于的图片,第二个对应的压缩系数。在相同的压缩系数下 使用UIImagePNGRepresentation(newImage, 0.5) 产生的图片大小 会比第一个大一个,可以自由的选择0 ~ 1 的压缩系数。

 如果在采用压缩系数 还是不够好的情况下,可以适当的裁剪图片的尺寸大小,对应相应的CGSize ,如果size过小的情况,图片显示会非常模糊,所以 两者要协调好。

- (NSData *)imageWithImage:(UIImage*)image

              scaledToSize:(CGSize)newSize;

{

    UIGraphicsBeginImageContext(newSize);

    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];

    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return UIImageJPEGRepresentation(newImage, 0.25);

}

在选择照片的时候 也可以使用GCD处理 再在主线程刷新

//参考以下 图片大小处理

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            for (int i=0; i                 ALAsset *asset=assets[i];
                UIImage *tempImg=[UIImage imageWithCGImage:asset.defaultRepresentation.fullScreenImage];
                float max_image_size = 150;//设定最大图像 大小
                NSData *imageData = nil;
                for (int i=0;i<10;i++){//在1- 10 中取到最合适和压缩系数
                    @autoreleasepool {
                        imageData = UIImageJPEGRepresentation(tempImg, 1.0f-(float)i*.1f);
                        if (imageData.length                             break;
                        }
                    }
                }
                [_aryPics addObject:[UIImage imageWithData:imageData]];
                dispatch_async(dispatch_get_main_queue(), ^{//刷新界面
                   //.....
                });
            }
        });
    }
}
    }

你可能感兴趣的:(iOS,/图片处理)