PIL Bild.open() funktioniert nicht für meine .png
Ich benutze PIL öffnen Bild für die Extraktion von einigen bits und schreiben Sie Sie auf Zeichenfolge. Es soll so sein, dass dieser code filter außer diejenigen, die (R<=1 && G<=1 && B<=1) und nahm das Letzte Stück von jeder Farbe. Die Sache ist, dass es nicht funktioniert.
from PIL import Image
def extract_bits(color, bitmask):
bitmask_len = len(bin(bitmask)[2:])
extracted_bits = bin(color & bitmask)[2:]
extracted_bits = '0' * (bitmask_len - len(extracted_bits)) + extracted_bits
return extracted_bits
if __name__ == '__main__':
img = Image.open('IMG_0707png')
pixels = list(img.getdata())
bits = ''
for i in range(0, len(pixels), 1):
r = pixels[i][0]
g = pixels[i][1]
b = pixels[i][2]
if not (r <= 1 and g <= 1 and b <= 1): continue
bits += extract_bits(r, 0x1)
bits += extract_bits(g, 0x1)
bits += extract_bits(b, 0x1)
bits += '0' * (8 - len(bits) % 8)
text = ''
for i in range(0, len(bits), 8):
text += chr(int(bits[i:i+8], 2))
print text
Schaute ich mich um dieses problem, und die Lösung gefunden, die funktioniert nicht in meinem Fall.
img = Image.open(open('IMG_0707.png', 'rb'))
In beiden Fällen bekomme ich
File "<stdin>, line 1, in <module>"
File "<string>" line11, im <module>
File "c:\python27\lib\site-packages\PIL\Image.py", line 1980, in open
raise IOError("cannot identify image file")
IOError: cannot identify image file
Auch habe ich versucht zu geben Sie den genauen Pfad nicht mit Glück.
img = Image.open(open("IMG_0707.png", 'rb'))
img = Image.open(open("c:\python27\IMG_0707.png", 'rb'))
img = Image.open(open("c:/python27/IMG_0707.png", 'rb'))
Und so weiter. Ich wäre für jede Hilfe dankbar.
Bild, im Versuch Sie zu öffnen
InformationsquelleAutor im_infamous | 2013-09-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dass PNG beschädigt ist. Hier ist, was ImageMagick zu sagen hatte:
InformationsquelleAutor Robᵩ
Hallo ich hatte das gleiche problem und das ist die Lösung
raw_data: in meinem Fall war es base64-dekodiert png-Datei
InformationsquelleAutor user4618077