最近,经常碰到有人反映“手机下载的图片无法打开”的问题。具体表现为在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

发表回复

后才能评论

本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。

最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或联络我们。

本站默认解压密码为:gopojie.com 如果不对可以去问答区反馈或者邮箱GoPoJie@126.com给我反馈我会在收到反馈信息第一时间处理。

对于会员专享、整站源码、程序插件、网站模板、网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。

如果您已经成功赞助付款但是网站没有弹出成功提示,请联系站长提供赞助付款信息为您处理。邮箱:gopojie@126.com

源码不提供技术支持。

源码素材属于虚拟商品,具有可复制性,可传播性,一旦授予,不接受任何形式的退款、换货要求。请您在购买获取之前确认好 是您所需要的资源