保存有圆角的png图片到相册,再从相册中编辑查看,发现有白边。用的保存代码如下:

UIImage * image = UIGraphicsGetImageFromCurrentImageContext();UIImageWriteToSavedPhotosAlbum(image, self, #selector(saveError(_:didFinishSavingWithError:contextInfo:)), nil)

猜测是图片本身的问题,莫非把图片保存到磁盘后变成了jpg图片?于是在磁盘中打开图片,发现是png图片,证明这个猜测是错的,那是为啥呢?
于是又做了如下的测试

把图片保存到系统相册后,再通过隔空投送传送到电脑,用电脑打开发现是jpeg的图片。莫非是苹果优化了图片存储的格式,保存相册过程中将图片默认转成了jpeg格式的图片?

于是有了如下代码:

func pngFrom(image: UIImage) -> UIImage? {if let imageData = UIImagePNGRepresentation(image) {let imagePng = UIImage(data: imageData)return imagePng}return nil
}
private func saveImage(image: UIImage) {if let image = pngFrom(image: image) {UIImageWriteToSavedPhotosAlbum(image, self, #selector(saveError(_:didFinishSavingWithError:contextInfo:)), nil)}
}

使用时调用

saveImage(image)

再打开图片,发现无白边。问题解决了。

于是大胆假设,原因就是:

用用UIGraphicsGetImageFromCurrentImageContext方法获取的图片,并未指明图片的格式(A image object containing the contents of the current bitmap graphics context.),苹果保存时就默认使用了一个有损且不含alpha通道的jpeg格式。而如果用代码将图片转化为png格式后,苹果就不进行了此优化了。
谁让你自己没指明图片的格式呢?既然没指明,那就在保存时默认使用占用磁盘空间小的图片格式吧(jpeg),这么做也没毛病。

以上就是图片保存采坑记,嗯,挺好玩的。

参考自:
https://stackoverflow.com/questions/1489250/uiimagewritetosavedphotosalbum-save-as-png-with-transparency

iOS开发--保存png图片到相册有白边相关推荐

  1. iOS开发------简单实现图片多选功能(Photos.framework篇)

    Photos.framework是iOS8后苹果推出的一套替代AssetsLibrary.framework获取相册资源的原生库,至于AL库,欢迎大家给博文iOS开发--简单实现图片多选功能(Asse ...

  2. IOS开发基础之图片轮播器-12

    IOS开发基础之图片轮播器-12 核心代码 // // ViewController.m // 12-图片轮播器 // // Created by 鲁军 on 2021/2/2. //#import ...

  3. iOS开发中拉伸图片的几种方式

    在iOS开发中,经常会遇到控件尺寸和图片大小不匹配的情况. 一些情况下, 我们需要对图片进行拉伸, 以满足美观需求. 总的来说, 图片的拉伸方式可以分为两种, 一种是通过Xcode自带的Show Sl ...

  4. Android开发之刷新图片到相册 | 刷新视频到相册的方法区分发广播刷新方法

    我们很多app会有保存图片和保存视频,保存成功后一般在最近文件或者相册就能看到了,这个需要我们在保存文件后自行刷新到相册中,以前老版本方法通过广播刷新方法在API29中已经废弃了无法使用,咱们提供了新 ...

  5. iOS开发需要哪些图片?

    1.产品设计图 可以以6的长宽比 750*1134来设计.这些图片用于描述app是什么样子的,这是app开发人员的开发参考. 2.产品切图 将设计师将设计稿切成可以用来开发的图 颜色值 iOS颜色值取 ...

  6. 小程序保存视频/图片到相册并且授权

    授权允许访问相册 wx.getSetting({ success(res) { if (!res.authSetting['scope.writePhotosAlbum']) { // 未授权 wx. ...

  7. iOS开发——仿微信图片浏览交互的实现(向下拖拽图片退出图片浏览器)

    点击上方"iOS开发",选择"置顶公众号" 关键时刻,第一时间送达! DEMO的github地址:https://github.com/YYProgrammer ...

  8. ios开发所需图片尺寸汇总

    应用图标App Icon: 以下图标都为直角,有图片格式备注,制作好后放在新建文件夹icon下,压缩为zip压缩包. iphone Spotlight - ios5,6 | Settings - io ...

  9. cordova Vue 保存视频/图片到相册 - 实现下载视频/图片到相册

    cordova实现保存视频到相册功能 亲测可用*(支持安卓,ios; 目前看来ios14都是可以的:没有兼容问题:) * 需要使用到插件 1.文件系统插件 https://github.com/apa ...

最新文章

  1. pip如何安装whl
  2. centos磁盘空间满查询和移动命令小记
  3. vector, list, map在遍历时删除符合条件的元素
  4. Bootstrap HTML 编码规范之JavaScript生成的标签
  5. Linux netfilter源码分析(7)
  6. linux 下的包管理器 —— apt-get 与 dpkg
  7. PHP通过PHP/JAVA Bridge调用JasperReport报表
  8. 【论文笔记】FaceNet: A Unified Embedding for Face Recognition and Clustering
  9. js 全国城市地区编码+拼音+大写首字母
  10. 五款机房教学管理系统,你的教室安装了吗
  11. ctfmon.exe
  12. 迅捷校园网自动登录脚本(网页端)
  13. 2017年电信业值得关注的7大颠覆性技术
  14. 用批处理的方式压缩文件
  15. 微软project服务器搭建,安装和配置 Project Server 2010
  16. 深度学习中常见的打标签工具和数据集资源
  17. lisp画弯箭头_在CAD中直接画箭头的命令的一个方法
  18. 归并排序-拓展至三路归并
  19. 2.3 视图的层次关系
  20. 一个SAPer的网络日志-连载二-说说MM的倒爷们

热门文章

  1. SAS单独更改变量名称以及批量更改变量名称
  2. 计算机网络——DNS协议
  3. C语言课程设计_职工工资管理系统
  4. DBCP 1.X MinIdle ,evict及MinEvictableIdleTimeMillis
  5. Onvif —— onvif 详细介绍
  6. 项目经理年终总结报告模板
  7. 加速度计和陀螺仪指南——数学模型和基本算法
  8. 求生之路显示服务器的指令,求生之路的所有控制台指令!
  9. CSDN中草稿箱怎么找到?——灵魂拷问
  10. 笔记本PS/2键盘无法使用,试下这个方法