PyPNG struct.error
W trakcie zapisu do pliku PNG z użycie PyPNG trafiłem na błąd struct.error
.
bitdepth=16
pozwala przechować wartości od 0 do 65535 (inaczej (256*256)-1 )
Jeśli wartość jest większa niż 65535 to pojawia się komunikat:
struct.error: 'H' format requires 0 <= number <= 65535
Jeśli wartość jest mniejsza niż 0 to pojawia się komunikat:
struct.error: argument out of range
Oba świadczą, że należy dane przeskalować do przedziału 0..65535 .
Przykładowy kod
import png
data = list()
for r in range(100): # r - row number
row = list()
for c in range(100): # c - column number
if r == c:
row.append(0) # OK (black)
else:
row.append((256*256)-1) # OK (white) (65535)
#row.append((256*256)) # ERROR - value too big for bitdepth=16
# struct.error: 'H' format requires 0 <= number <= 65535
#row.append(-1) # ERROR - value too small for bitdepth=16
# struct.error: argument out of range
data.append(row)
out = png.Writer(width=100, height=100, greyscale=True, bitdepth=16)
out.write(open('output.png', 'wb'), data)
If you like it
Buy a Coffee
