Dlaczego otrzymuję komunikat "Nie jest plik JPEG: zaczyna się od 0x89 0x50", gdy próbuję otworzyć mój plik JPG?Dlaczego pojawia się błąd: "Nie jest to plik JPEG: zaczyna się od 0x89 0x50"
Odpowiedz
Plik jest w rzeczywistości plikiem PNG o niewłaściwym rozszerzeniu pliku. "0x89 0x50" określa sposób uruchamiania pliku PNG.
Twój plik nie jest plikiem JPEG, jego nazwa została po prostu zmieniona z pliku PNG na JPEG. Niektóre programy otwierają to jako rozpoznane rozszerzenie pliku i określają typ z przedrostka, ale oczywiście nie ten, którego używasz.
To jest odpowiedź o błędzie podczas próby otwarcia pliku PNG przy użyciu przeglądarki plików JPEG, która korzysta z biblioteki libjpeg do otwierania plików jpeg. Nazwa pliku została zmieniona z png na JPEG, jak wspomniano we wcześniejszych odpowiedziach.
Oto skrypt Pythona, który identyfikuje obrazy błędów jpg w katalogu.
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")
po prostu zmienić nazwę * .jpg na * .png. Lub otwórz ten plik w przeglądarce
Jeśli chcesz znaleźć te pliki, możesz użyć tego linku StackOverflow: https://stackoverflow.com/questions/30684796/rename-a-bunch-of-png-images- z-jpg-extension-to-png – zigzag