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