最近做的项目中需要上传头像,发表内容的时候也要涉及到图片上传,我直接用的原图上传,但是由于公司网络差,原图太大,老是加载好久好久,所以需要把原图裁剪或者修改分辨率之后再上传,找了好久,做了很多尝试才解决问题,下面记录一下,以便帮助自己查找,也希望能帮助其他人。

我们一般图片上传最好使用UIImageJPEGRepresentation(image,0.1)这个方法先把图片处理一下,其实这个方法把图片压缩之后,图片大小会小很多(小多少待会再讲),但是在app上人眼的感觉差不多,我对图片的处理如下:

从相册拿到图片后,先经过方法修改图片的大小,也就是分辨率,方法如下:

- (UIImage *)scaleImage:(UIImage *)image toSize:(CGSize)size

{

UIGraphicsBeginImageContextWithOptions(size,NO,0.0);

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

UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return scaledImage;

}

因为我是要上传头像,所以我把图片的size设置为(128,128),这里我在模拟器中截取到了一个320*320的图片,然后经过这个方法压缩后得到的图片是20.3KB,然后我在上传之前又用UIImageJPEGRepresentation(image,0.05)把图片品质压缩了一下,图片的大小变成了1.5KB左右,这样的小图,在app上加载起来快急了,之前那个七八十KB的图片经常都加载不出来呢,现在OK了~。

总结:1、用 - (UIImage *)scaleImage:(UIImage *)image toSize:(CGSize)size 修改图片的分辨率;

2、用 UIImageJPEGRepresentation(image,0.1)这个方法来压缩图片品质。

其他补充,另一个方法UIImagePNGRepresentation(image),这个方法拿到的图片会比UIImageJPEGRepresentation(image,1.0)拿到的图片大一点,不知道为什么,欢迎其他人来补充。

另一个裁剪图片的某部分区域的方法:

- (UIImage *)croppedImage:(UIImage *)image

{

if (image)

{

CGRect rectMAX = CGRectMake(0, 0, 128, 128);

CGImageRef subImageRef = CGImageCreateWithImageInRect(image.CGImage, rectMAX);

UIGraphicsBeginImageContext(rectMAX.size);

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextDrawImage(context, rectMAX, subImageRef);

UIImage *viewImage = [UIImage imageWithCGImage:subImageRef];

UIGraphicsEndImageContext();

CGImageRelease(subImageRef);

return viewImage;

}

return nil;

}

这个方法可以获取裁剪后的图片,举个例子,一个256*256的图片,用这个方法之后,就可以获取到左上角一个128*128区域的图片,具体裁剪哪里,可以修改上面rectMax的坐标和大小。

ios 图片裁剪框架_iOS 图片裁剪与修改相关推荐

  1. ios 图片裁剪框架_iOS图片裁剪器 – RSKImageCropper

    RSKImageCropper iOS图片裁剪器,类似Contacts应用中的图片定位美化. 基础使用方法 导入类header. #import Just create a view controll ...

  2. 小红书图片剪裁框架+微信图片选择器+超高清大图预览+图片自定义比例剪裁,支持 UI 自定义、支持跨进程回调

    YImagePicker 项目地址:yangpeixing/YImagePicker 简介: 小红书图片剪裁框架+微信图片选择器+超高清大图预览+图片自定义比例剪裁,支持 UI 自定义.支持跨进程回调 ...

  3. ios xib 初始化高度_iOS图片伸缩技巧

    纵观移动市场,一款移动app,要想长期在移动市场立足,最起码要包含以下几个要素:实用的功能.极强的用户体验.华丽简洁的外观.华丽外观的背后,少不了美工的辛苦设计,但如果开发人员不懂得怎么合理展示这些设 ...

  4. java实现轮播图片_Banner框架实现图片轮播

    Banner 实现图片轮播 简介 导入 自定义样式 快捷使用 总结 Blog如有不对,敬请斧正 喜欢Android的可以关注我,日常更新Android干货 看都看到这了,加个关注叭! 简介 Banne ...

  5. 小红书图片剪裁框架+微信图片选择器+超高清大图预览,高级Android程序员必会

    .setFirstImageUrl(null)//设置上一次选中的图片地址 .setVideoSinglePick(true)//设置视频单选 .setCropPicSaveFilePath(&quo ...

  6. ios 裁剪框大小_iOS实现裁剪框和图片剪裁功能

    这篇文章主要为大家详细介绍了iOS实现裁剪框和图片剪裁功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下图片处理中经常用的图片剪裁,就是通过剪裁框确定图片剪裁的区域,然后剪去该区域的图片,今天实现 ...

  7. ios 图片居中裁剪_IOS图片裁剪和小图看大图动画

    IOS的UIImagePickerController可以让用户通过相机或者相册获取想要的图片,并且通过设置allowsEditing属性允许用户在选择了图片以后对图片进行裁剪.不过在某些时候会出现正 ...

  8. ios 裁剪框大小_ios 图片裁剪修改尺寸的方法总结

    目前使用过的图片裁剪方法 1.等比例压缩 裁剪出的图片是以asize最小值为边框的正方形图片 //修改图片尺寸同比缩放 + (UIImage*)thumbnailWithImageWithoutSca ...

  9. ios 将矩形图片裁剪成圆形图片

    在ios中将一个正方形的图片裁剪成圆形的图片是一件非常容易的事情, 直接设置 imageView.layer.cornerRadius 这个属性, 再设置 imageView.clipsToBound ...

最新文章

  1. Pytorch view()、squeeze()、unsqueeze()、torch.max()
  2. hibernate中一对多关系的映射
  3. wp7中的fill_parent
  4. pandas新建dataframe_pandas数据处理
  5. 深度学习《Photo Editing》
  6. Docker学习文档之二 搭建环境-Linux环境
  7. 错误记录(12):No 'Access-Control-Allow-Origin' header is present on the requested resource.
  8. NSURLCache详解和使用
  9. 网络工程师和网络管理原的区别
  10. 不是我吹,这款神仙 IDEA 插件你真没用过!
  11. CSS权威指南(第三版)笔记
  12. php客户订单管理系统,PHP订单管理系统完整版源码PHP订单管理系统完整版源码
  13. vue单页面html缓存问题,vue单页面 回退页面 keeplive 缓存问题
  14. W型加密栅栏密码解密
  15. 黑苹果原版安装从零开始---5驱动安装篇
  16. 阿里云部署nginx
  17. python中transform_Python rendering.Transform方法代码示例
  18. 深度学习之facenet人脸识别网络介绍
  19. TORCHVISION 目标检测微调教程
  20. ORA-01000-超出打开游标的最大数(解决及原因)

热门文章

  1. print('{:15}|{:^9}|{:^9}'.format('', 'lat.', 'long.'))是什么意思?
  2. string的基本用法
  3. maven 打包时动态替换properties资源文件中的配置值
  4. Memcached安装及配置
  5. 从 Google 代码库找到的好东西 [转]
  6. CSS3文字渐变效果
  7. 读书笔记《React:引领未来的用户界面开发框架》
  8. 跑步与读书都废掉了...工作目前也在换新的.
  9. 计算机网络学习笔记--网络层知识点整理
  10. 三层架构之初识庐山真面目