Forum Programmation.python [PIL] problème avec la création d'une image avec les pixels

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes : aucune
0
12
oct.
2013

Bonjour

Je lis une image puis crée une deuxième image en copiant les pixels or les pixels ne sont pas les mêmes!!!!!!

voici un script dont le dcript dont je ne comprend pas pourquoi les pixels des deux images ne sont pas identiques.

je le test avec ipython3 (j'ai le même résultat avec python2)

In [30]: from PIL import Image
In [31]: file1='image1.jpg'
In [32]: file2='image2.jpg'
In [33]: img1 = Image.open(file1)
In [34]: data1 = list(img1.getdata())
In [35]: imNew=Image.new(img1.mode ,img1.size)
In [36]: imNew.putdata(data1)
In [37]: imNew.save(file2)
In [38]: img2 = Image.open(file2)
In [39]: data2 = list(img2.getdata())
In [40]: data2==data1
Out[40]: False
In [41]: data1[20]
Out[41]: (214, 218, 227)
In [42]: data2[20]
Out[42]: (214, 218, 229)

On constate bien que les pixels ne sont pas les mêmes!!!!!!
merci de m'aider

  • # Compression

    Posté par  (site web personnel) . Évalué à 3.

    Je vais peut-être dire une grosse bêtise (je sais pas comment marche jpeg), mais peut-être que tout simplement les différentes opérations ne sont pas réversibles à cause des transformations des algos de compression/décompression, ce qui expliquerait la petite différence à la fin.

  • # save

    Posté par  (site web personnel) . Évalué à 4. Dernière modification le 12 octobre 2013 à 19:06.

    D'après http://effbot.org/imagingbook/format-jpeg.htm la "quality" est fixé à 75 par défaut. C'est peut-être ça qui change la valeur que tu as positionné. Essayes en mettant la qualité à 100 (même si déconseillé) ou utilise un format non destructif.

    L'association LinuxFr ne saurait être tenue responsable des propos légalement repréhensibles ou faisant allusion à l'évêque de Rome, au chef de l'Église catholique romaine ou au chef temporel de l'État du Vatican et se trouvant dans ce commentaire

    • [^] # Re: save

      Posté par  (site web personnel) . Évalué à 1.

      merci à vous

      avec un fichier non compressé au format TIFF j'ai bien

      data2==data1
      Out[47]: True
  • # pillow

    Posté par  . Évalué à 2.

    Je ne sais pas quel système tu utilises mais il semble préférable de passer de PIL à Pillow parce que c'est mieux maintenu. Peut-être que ta difficulté est due à un bug de PIL donc ça pourrait valoir le coup d'essayer Pillow, il faut noter que je dis ça mais je n'y connais pas grand chose à PIL.

    Plus d'info : http://pillow.readthedocs.org/en/latest/about.html

  • # Compression (bis)

    Posté par  . Évalué à 1.

    JPEG est une compression non conservatrice, il est tout à fait possible qu'entre 2 images quasi-identiques, les valeurs RGB des pixels soient légèrement différentes.

    • [^] # Re: Compression (bis)

      Posté par  (site web personnel) . Évalué à 0.

      c'est ce que j'avais conclu, c'est une compression avec perte.
      Je testai la stéganographie donc j'ai besoin d"une image non compressée.

      merci encore

  • # [PIL] problème avec la création d'une image avec les pixels

    Posté par  (site web personnel) . Évalué à 0.

    Finalement j'ai opté pour le format png qui a bien une compression mais sans perte.

    Merci à tous pour votre aide

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.