iOS对图像损坏错误::ImageIO的处理方法
在网络不好时,可能请求的图片数据不完整,这时候在imageView展示图片时,因为发现PNG图片不完全正确,所以早console里报错,如下:
<Error>: ImageIO: PNG IDAT: invalid stored block lengths
但这个不是运行时异常,不知道该怎么捕获,从而进行例如重新请求等操作。求解该怎么做?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
真是功夫不负有心人,在各种stackoverflow和google无解之后,我自己读了UIImage、UIImageView以及ImageIO的源码和官方说明,找到了个取巧的办法,你需要写下面两步代码:
1.读取图片数据,然后调用2中的方法进行校验
2.判断是否为有效的PNG图片,JPG的请使用UIImageJPEGRepresentation方法
真是眼泪都留下来了!~
图片能正常显示么?
如果不能正常显示的话,你可以自己先做一个验证操作,如果自己验证过了再赋值给imageView,这种错误也不该无视吧?毕竟图片确实有问题。
如果你实在想让它不显示,我觉得有三条个办法:
so上找到的检测 PNG 的方法:
Objective-C的hook方案(一): Method Swizzling
IOS应用发布NSLog的注释及使用重定向,把控制台内容写入文件
PNG validation on iOS