当前位置: 移动技术网 > 移动技术>移动开发>IOS > iOS开发之image图片压缩及压缩成指定大小的两种方法

iOS开发之image图片压缩及压缩成指定大小的两种方法

2019年07月24日  | 移动技术网移动技术  | 我要评论

///压缩图片
+ (nsdata *)imagecompresstodata:(uiimage *)image{
  nsdata *data=uiimagejpegrepresentation(image, 1.0);
  if (data.length>300*1024) {
    if (data.length>1024*1024) {//1m以及以上
      data=uiimagejpegrepresentation(image, 0.1);
    }else if (data.length>512*1024) {//0.5m-1m
      data=uiimagejpegrepresentation(image, 0.5);
    }else if (data.length>300*1024) {//0.25m-0.5m
      data=uiimagejpegrepresentation(image, 0.9);
    }
  }
  return data;
}

ps:下面看下 ios中图片压缩成指定的大小

 ios中,我们为了节省内存,需要对图片来进行处理,来优化程序,提高程序的效率,下面是一个根据自己的要求来重新设置图片的大小:

一、压缩图片有两种方式,第一种是压缩图片的大小,重新生成图片的尺寸:如下

/** 
 * 压缩图片到指定尺寸大小 
 * 
 * @param image 原始图片 
 * @param size 目标大小 
 * 
 * @return 生成图片 
 */ 
-(uiimage *)compressoriginalimage:(uiimage *)image tosize:(cgsize)size{ 
  uiimage * resultimage = image; 
  uigraphicsbeginimagecontext(size); 
  [resultimage drawinrect:cgrectmake(00, 0, size.width, size.height)]; 
  uigraphicsendimagecontext(); 
  return image; 
} 

二、第二种是修改图片的文件大小:如下

/** 
 * 压缩图片到指定文件大小 
 * 
 * @param image 目标图片 
 * @param size 目标大小(最大值) 
 * 
 * @return 返回的图片文件 
 */ 
- (nsdata *)compressoriginalimage:(uiimage *)image tomaxdatasizekbytes:(cgfloat)size{ 
  nsdata * data = uiimagejpegrepresentation(image, 1.0); 
  cgfloat datakbytes = data.length/1000.0; 
  cgfloat maxquality = 0.9f; 
  cgfloat lastdata = datakbytes; 
  while (datakbytes > size && maxquality > 0.01f) { 
    maxquality = maxquality - 0.01f; 
    data = uiimagejpegrepresentation(image, maxquality); 
    datakbytes = data.length / 1000.0; 
    if (lastdata == datakbytes) { 
      break; 
    }else{ 
      lastdata = datakbytes; 
    } 
  } 
  return data; 
} 

这是压缩图片的两种方式。

总结

以上所述是小编给大家介绍的ios开发之image图片压缩及压缩成指定大小的两种方法,希望对大家有所帮助

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网