IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Problème de sauvegarde de fichier .jpg en utilisant PIL


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Par défaut Problème de sauvegarde de fichier .jpg en utilisant PIL
    Bonjour
    Je travaille sous ubuntu 16.04 avec python 3.5.2. Lorsque j'enregistre un fichier .jpg, et je le ré-ouvre, les données sont modifiées. Je n'ai pas trouvé d'explication.
    Voici mon programme source python :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    from PIL import Image
    import numpy as np
     
    im=Image.new("RGB",(5,4),"white")       # je crée une une petite image blache (pour tester)
     
    pic=np.array(im)                        # matrice de mon image             
    pic[0,0][0]=100                         # je modifie trois octets
    pic[0,0][1]=100
    pic[0,0][2]=100
     
    im2=Image.fromarray(np.uint8(pic))      # je retransforme en image
     
    im2.save("image.jpg","jpeg")            # je sauvegarde
     
    im3=Image.open("image.jpg")             # j'ouvre mon fichier image
     
    pic2=np.array(im3)                      # la nouvelle matrice, différente de celle
                                            # avant l'enregistrement ! Comment l'expliquer ? est-ce normal ?

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Bonjour

    C'est normal. JPEG est un format compressé. La compression permet d'amoindrir le poids d'une image mais cela se paye : Il y a de petites perturbations qui apparraissent sur l'image (car lors de la compression, on a une petite perte d'information). Si dans ton code tu cxhange jpeg en png, tu retrouves les mêmes matrices (png lui stocke les valeurs de pixels une à une, donc aucune compression ni perte)

  3. #3
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    au pire on doit pouvoir demander à JPEG de ne pas perdre de données en spécifiant im2.save(fichier, quality=100), mais ça perd probablement tout l'intérêt de JPEG, opter pour PNG c'est effectivement pas plus mal

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Par défaut
    Bonjour,
    Merci à Ig_53 et BufferBob pour les réponses.
    Ig_53, tu as raison, avec PNG je retrouve ma matrice, par contre avec la proposition de BufferBob il y a une perte, par exemple si les trois premiers octets dans ma matrices sont [20,20,20], après enregistrement et ré-ouverture je trouve [19,19,19].

  5. #5
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Salut.

    JPEG est un format par définition avec pertes, et en regardant vite fait sur wikipédia on peut comprendre comment ça fonctionne sans entrer dans les détails techniques car c'est quand même complexe, donc même à 100 tu perdras de l'information, si tu ne veux pas de pertes, choisis du png comme on te l'a précisé lg_53.

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Par défaut
    Ok,
    Merci, mon but c'était de récupérer ma matrice, le format png me convient parfaitement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/04/2011, 15h04
  2. Réponses: 4
    Dernier message: 28/03/2011, 16h43
  3. [PHP Excel] Sauvegarde du fichier
    Par breizhlama dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 17/11/2010, 09h55
  4. Problème de sauvegarde de fichier dans jar
    Par shinkansen dans le forum Général Java
    Réponses: 9
    Dernier message: 25/05/2009, 16h05
  5. Problème de sauvegarde de fichier
    Par Coucougnou dans le forum Pascal
    Réponses: 9
    Dernier message: 27/04/2008, 09h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo