Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

AttributeError: 'array.array' object has no attribute 'tostring' di images lib

Tommaso.Lopedote (1470 points)
5 11 28
in Programmare in Python by (1.5k points)

Oggi lavorando con gli esercizi di esame relativi alla elaborazione di immagini mi sono scontrato molteplici volte con l'errore riportato in titolo:

inizialmente ho sospettato che fosse un problema della matrice, come per esempio: una riga con un valore di troppo oppure i tipi dei dati forniti errati, ma scrivendo l'immagine su un file .txt per verificare il nummero di colonne e di righe ma anche il tipo dei dati,  tutto sembra risulta corretto, cioè ogni riga ha la stessa lunghezza, tutti i valori nelle righe sono tuple, la matrice è in forma: list[ list [ tuple() ] ].

Vi lascio lo StackTrace per sicurezza:

Traceback (most recent call last):
  File "C:\Users\trast\Desktop\Università\Esercizi_py\esercitazione-23-12-2020\program.py", line 221, in <module>
    ex2(P1,"sei.png")
  File "C:\Users\trast\Desktop\Università\Esercizi_py\esercitazione-23-12-2020\program.py", line 143, in ex2
    images.save(matrix, fname)
  File "C:\Users\trast\Desktop\Università\Esercizi_py\esercitazione-23-12-2020\images.py", line 30, in save
    pngimg.save(filename)
  File "C:\Users\trast\Desktop\Università\Esercizi_py\esercitazione-23-12-2020\png.py", line 1279, in save
    w.write(file, self.rows)
  File "C:\Users\trast\Desktop\Università\Esercizi_py\esercitazione-23-12-2020\png.py", line 620, in write
    nrows = self.write_passes(outfile, rows)
  File "C:\Users\trast\Desktop\Università\Esercizi_py\esercitazione-23-12-2020\png.py", line 789, in write_passes
    compressed = compressor.compress(tostring(data))
  File "C:\Users\trast\Desktop\Università\Esercizi_py\esercitazione-23-12-2020\png.py", line 197, in tostring
    return row.tostring()
AttributeError: 'array.array' object has no attribute 'tostring'

1 Answer

Best answer
andrea.sterbini (207920 points)
750 1267 2373
by (208k points)
selected by
Hai una versione non patchata di png.py
Tommaso.Lopedote (1470 points)
5 11 28
by (1.5k points)
Ho inserito la versione di png.py piu' recente che avevo e ora effettivamente funziona correttamente. Grazie prof.
d
dscarano (280 points)
0 5 11
by (280 points)
Ciao, la versione da dove è stata reperita? Ho scaricato oggi lo .zip ma presento lo stesso problema.
andrea.sterbini (207920 points)
750 1267 2373
by (208k points)

https://twiki.di.uniroma1.it/pub/Programmazione1/AA21_22/DiarioDelleLezioni-CanaleAL/png.py.txt

La modifica è questa:

def tostring(row):
    return row.tobytes()
    #return row.tostring()
d
dscarano (280 points)
0 5 11
by (280 points)
Funziona, la ringrazio.