最近,经常碰到“微信PC版或者手机下载的图片储存到电脑后无法打开”的问题。具体表现为在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信息。
下载地址:关注小编,私信关键词“照片修复”获取。