1ios中两种图⽚压缩的⽅式
介绍:
英语看图说话UIImageJPEGReprentation 需要两参数:图⽚的引⽤和压缩系数
青椒土豆丝的做法UIImagePNGReprentation⽅法需要⼀参数:图⽚的引⽤
两种⽅式返回的都是NSData类型
⽐较:
同样是读取摄像头拍摄的图⽚,UIImagePNGReprentation(UIImage *image)返回的数据量⼤⼩为199K,⽽UIImageJPEGReprentation(UIImage *image,1.0)返回的数据量只有140K,⽐前者少了50多K;⽽且如果对图⽚的质量要求不那么⾼的话,还可以通过设置压缩系数进⼀步减少数据量,降低压缩系数后UIImageJPEGReprentation(UIImage *image, 0.5),返回的数据⼤⼩只有11K,⼤⼤压缩了图⽚数据量,⽽且从视图⾓度看,图⽚的质量并没有明显降低。所以,在读区图⽚数据内容的时候,建议优先使⽤⽅法UIImageJPEGReprentation(UIImage *image, CGFloatcompressionQuality)
护发膜怎么使用jpeg :耗时短
贝里琉岛png:耗时长
代码:
NSData *data = nil;养老金可以取出来吗
if(!UIImagePNGReprentation(image)) {
stdev函数
data =UIImageJPEGReprentation(image,0.1);
}el{
data =UIImagePNGReprentation(image);
}
实⽤:
将数组中的UIImage取出,存为本地PNG图⽚
问题: 通过UIImagePNGReprentation()⽅法保存PNG格式图⽚时,由于ARC机制,会产⽣⼤量临时的autorelea对象,需要等待runloop 的autoreleapool销毁时才能销毁这些对象。由于for循环中的临时对象⽆法及时释放,造成内存持续增长,最终导致程序的不稳定,甚⾄崩溃。
instruments:内存暴涨 尽管代码中创建了⾃⼰的@autoreleapool,但是临时对象仍然没有被销毁,仍然以⾃⼰的节奏⾼速增长。
⽅案: 使⽤imageIO存储PNG图⽚
for循环存png图⽚快乐动物园
先增后减:增长峰值为截图产⽣的内存
广目天
另⼀种⽅式: 渲染
imageIO: