最近,经常碰到有人反映“手机下载的图片无法打开”的问题。具体表现为在Windows7中打开图片,提示“Windows 照片查看器无法显示此图片,因为计算机上的可用内存可能不足。请关闭一些目前没有使用的程序或者释放部分硬盘空间(如果硬盘几乎已满),然后重试。” 如下图所示:

经确认:

1、其它图片,相比问题图片,无论是文件大的和文件小的,都能正常打开。

2、问题图片能够显示缩略图,而且用画图,PS等软件都能正常打开。

3、问题图片在win10系统里能够正常打开。

网上先搜索了一下问题的解决方法,主要有以下几类:

1、  校准颜色,有说校准打印机颜色的,也有说校准显示器颜色的。(可能可以,但是小编没有成功)

2、  修改系统变量,把tmp变量指向别的路径(小编没有成功)

3、  更换打开图片的软件并修改另存一下,例如2345看图,PS等(这个方案可行)

4、  增加电脑内存(看到这个方法,真的要吐血)

以上第三个方法虽然可以解决打开的问题,但是如果图片比较多的话,机械性重复操作起来就觉得比较烦心和费时。本来,需要花时间的业务工作还有很多,把时间花在非主业的看问题图片上,实在有点可惜,能不能有一个彻底的解决办法呢?怀着这个期望,小编挤时间调查研究了一番,总算找到了病灶。调查过程很枯燥,不再累述,思路略略带过提一下,供日后借鉴。思路切入点有两个,一是为什么校准颜色(疑似系统颜色空间和图片自带颜色空间不一致),二是为什么内存不足(疑似读取图片长和宽时读错大小)。结合JPG图片的格式规范(里面有图片的扩展信息,包括JFIF,EXIF,ICC等等,这些信息不是图片的必要信息,允许删除),利用winHex编辑器(二进制编辑器)对JPG图片的扩展信息进行修改、切除等操作,观察图片是否能恢复正常,以便查找病灶。最终发现两个解决办法:

一是在JPG图片的EXIF信息中,把代表数据读取顺序的“MM”两个字节改成“II”,图片可以正常打开。


二是把JPG图片中的ICC信息都删除,图片也可以正常打开。

问题病灶找到了,接下去就方便了,用自己熟悉的c#语言,写了一个批量处理的小程序,方便修复图片,节省时间。让人做人做的事情,让机器做机器做的事情。

 

工具简介:本工具支持下拉框中选择多种修复方式,一种不行可以尝试其它方法。默认方法对文件改动最小,仅2字节。如果默认方法无效,可以考虑删除ICC,或者删除所有APP信息。


————————————————

百度盘下载:


链接:https://pan.baidu.com/s/1FNDRuKyCAdRofWOZya3TyQ
提取码:2ma7

 

 

 

 

 

版权声明:本文为CSDN博主「云无碍」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/leizhendong/java/article/details/104715256

声明:
1,本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2,本站软件分享目的仅供大家学习和交流,请不要用于商业用途,下载后请于24小时后删除!
3,如果你也有好的源码或者教程,可以投稿到本站,分享有金币奖励和额外的收入!
4,本站提供的软件,源码,游戏,其他资源部不包含技术服务请大家谅解!
5,如有链接无法下载,请联系站长处理!
6,申明:本站资源出售只是赞助,仅用于本站服务器和日常运营所需!不提供任何技术支持。
7,如压缩包提示有密码,默认解压 密码为‘gopojie.com’,如遇到无法解压的可以联系站长(GoPoJie#126.com注意:#改成@)!
8,特别声明:破解产品仅供参考学习,不提供技术支持,如有需求,建议购买正版!如果源码侵犯了您的利益请留言告知!!