欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-12-20 10:59:46
///压缩图片 + (nsdata *)imagecompresstodata:(uiimage *)image{ nsdata *data=uiima...

///压缩图片
+ (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图片压缩及压缩成指定大小的两种方法,希望对大家有所帮助

上一篇:

下一篇: