整理实现UIImage与bitsData(rgba值)互相转换

[复制链接]
380 27
UIImage===>图片像素信息===>UIImage






图像信息类
昨天看到有人在问这方面的问题,想到很久之前也在做这个转换,当时我把网上找到的信息,整理封装写成一个类,现在把它发布出来,供需要的朋友参考使用,里面肯定有很多地方处理的不好,恳请大家指正!
程序中主要实现的操作,获取一张图片的像素信息,保存在一维数组中,可以获取图片中任何一个位置的像素点,同时可以改变此像素点
关于获取位置对应的数组越界为题,我代码中没有考虑,你们都可以修改 对于png类型的图片,转换后没问题,但是jpg不可以,我没有解决 能够解决的朋友,请帮我补充完成!
源代码已附带,供大家一起分享,学习!



PS(2010-08-16):======================================
感谢rayking1985朋友的讨论和指正,今天对代码作了重新修改,由于代码是我刚学iphone开发时从网上整理收集到的,有的地方写的不规范同时内存方面处理的也不好,今天再修改更新一下!
主要更新的地方除了rayking1985朋友提出的,另一个地方就是ImageInfo类的初始化中,不需要为image成员对象人为开辟内存,因为它从cgimage转换而来,cgimage指向的内存空间由系统开辟和管理的。
***同时今天发现,我的程序能够转换png格式的图片,只要把ImageInfo类对象,声明为控制器的成员变量,不要再viewDidLoad中立即释放,放在dealloc函数中,最后释放即可正常显示出来!但是我不知道什么原因,请教大家!
详见代码,不足或者不对之处,请务必指出,共同进步!

举报 使用道具

回复

27 个评论

rouran555  新手上路  发表于 2018-5-20 22:36:32  | 显示全部楼层
mark  学习~~~

举报 使用道具

回复
fashionbaby  新手上路  发表于 2018-5-20 22:43:04  | 显示全部楼层
lz你好,谢谢你共享代码,我的项目正好要用到。
不过,代码中似乎有一个问题,就是不能设置alpha值,
我找到了原因,
CGImageRef cgImage2 = CGImageCreate(pixelsWidth,
                                        pixelsHeight,
                                        8,
                                        8 * 4,
                                        bitmapBytesPerRow,
                                        colorSpace2,
                                        kCGBitmapByteOrderDefault,
                                        provider,
                                        NULL,
                                        NO,
                                        kCGRenderingIntentDefault);

这个方法里的第7个参数应该改成kCGImageAlphaPremultipliedLast|kCGBitmapByteOrderDefault,就ok了  但这样改又会有新的问题  就是边缘会出现锯齿。
不知道,楼主有没有什么解决方法呢?

举报 使用道具

回复
up116  新手上路  发表于 2018-5-20 22:52:32  | 显示全部楼层
正好需要解决这个问题~ 太感谢楼主了

举报 使用道具

回复
pdan  新手上路  发表于 2018-5-20 23:05:51  | 显示全部楼层
非常感谢你的分享 对我很有帮助

举报 使用道具

回复
onionisi  新手上路  发表于 2018-5-21 00:00:15  | 显示全部楼层
学习了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

举报 使用道具

回复
sk70302  新手上路  发表于 2018-5-21 00:20:33  | 显示全部楼层
mark 学习了

举报 使用道具

回复
ouzuiainan  新手上路  发表于 2018-5-21 01:02:25  | 显示全部楼层
来学习下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

举报 使用道具

回复
goldor  新手上路  发表于 2018-5-21 01:35:16  | 显示全部楼层
mark 学习一下

举报 使用道具

回复
zhangjunkai521  新手上路  发表于 2018-5-21 01:44:22  | 显示全部楼层
呵呵  我已经解决了 。我原来的代码判断像素相等只是单纯的比较alpha(主要项目不需要比较其他颜色)  所以出现了以上问题,但我后来我做了全部比较以后,问题就没有了。
最后,谢谢楼主分享代码。

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

ios.irunthink.com
搜索
热搜: iOS swift 下拉刷新

图文热点

更多

开发教程

更多

客服中心

400-800 周一至周日 9:30-17:30 仅收市话费

关注我们

  • 微信扫描
  • 关注微信
关于我们
关于我们
友情链接
联系我们
帮助中心
精贴推荐
源码上传
注册登录
服务支持
资源下载
关注我们
官方微博
官方空间
快速回复 返回顶部 返回列表