为什么我得到错误:“不是JPEG文件:以0x89 0x50开头”

当我尝试打开我的jpg文件时,为什么会收到消息“不是JPEG文件:以0x89 0x50开头”?

你的文件不是一个JPEG文件,它只是在一路上从PNG重新命名为JPEG。 一些程序会打开这个作为一个公认的文件扩展名,并从前缀推断types,但显然不是你正在使用的。

该文件实际上是一个错误的文件扩展名的PNG。 “0x89 0x50”是一个PNG文件如何启动。

当您尝试使用使用libjpeg打开jpeg文件的JPEG文件查看器打开PNG文件时,这是错误响应。 如前面的答案中所述,您的文件从png重命名为JPEG。

这是一个python脚本来识别目录中的错误jpg图像。

import glob import os import re import logging import traceback filelist=glob.glob("/path/to/*.jpg") for file_obj in filelist: try: jpg_str=os.popen("file \""+str(file_obj)+"\"").read() if (re.search('PNG image data', jpg_str, re.IGNORECASE)) or (re.search('Png patch', jpg_str, re.IGNORECASE)): print("Deleting jpg as it contains png encoding - "+str(file_obj)) os.system("rm \""+str(file_obj)+"\"") except Exception as e: logging.error(traceback.format_exc()) print("Cleaning jps done")