image - source - stellar phoenix jpeg repair 2
¿Por qué me aparece el error? "No es un archivo JPEG: comienza con 0x89 0x50" (6)
¿Por qué recibo el mensaje "No es un archivo JPEG: comienza con 0x89 0x50" cuando intento abrir mi archivo jpg?
Aquí hay una secuencia de comandos python para identificar esas imágenes jpg de falla en un directorio.
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")
Aquí hay una versión modificada del guión de Mohit. En lugar de eliminar los archivos mal nombrados, los renombra de forma no destructiva.
También intercambia las llamadas a os.system () por llamadas de subproceso que resuelven problemas de escape con respecto a las comillas en los nombres de archivo.
import glob
import subprocess
import os
import re
import logging
import traceback
filelist=glob.glob("/path/to/*.jpg")
for file_obj in filelist:
try:
jpg_str = subprocess.check_output([''file'', file_obj]).decode()
if (re.search(''PNG image data'', jpg_str, re.IGNORECASE)) or (re.search(''Png patch'', jpg_str, re.IGNORECASE)):
old_path = os.path.splitext(file_obj)
if not os.path.isfile(old_path[0]+''.png''):
new_file = old_path[0]+''.png''
elif not os.path.isfile(file_obj+''.png''):
new_file = file_obj+''.png''
else:
print("Found PNG hiding as JPEG but couldn''t rename:", file_obj)
continue
print("Found PNG hiding as JPEG, renaming:", file_obj, ''->'', new_file)
subprocess.run([''mv'', file_obj, new_file])
except Exception as e:
logging.error(traceback.format_exc())
print("Cleaning JPEGs done")
El archivo es en realidad un archivo PNG con la extensión de archivo incorrecta. "0x89 0x50" es como se inicia un archivo PNG.
Esta es la respuesta de error cuando intenta abrir un archivo PNG usando un visor de archivos JPEG que usa libjpeg para abrir archivos jpeg. Su archivo se renombra de png a JPEG como se menciona en las respuestas anteriores.
Su archivo no es un archivo JPEG, simplemente ha sido renombrado desde PNG a JPEG en algún momento. Algunos programas abrirán esto como una extensión de archivo reconocida e inferirán el tipo del prefijo, pero obviamente no el que estás usando.
simplemente cambie el nombre * .jpg a * .png. O abra este archivo en el navegador