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 :

Exporter une image sous forme de bytes


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Points : 413
    Points
    413
    Par défaut Exporter une image sous forme de bytes
    Bonjour,

    J'ai des images à envoyer sur un socket. Voici une petite partie du script concernant l'initialisation de l'image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    photo = ImageTk.PhotoImage(img, size, master=master)
    C'est donc une image, je l'obtient à partir d'une chaîne de bytes mais celle-ci est trop longue et je n'ai pas besoin d'une si grande résolution, donc je me demandais si c'était possible soit de l'exporter en une chaîne de bytes plus courte ou de compresser simplement la chaîne de départ.
    Merci d'avance !
    Bouddha : Tout n'est qu'illusion en ce bas monde.
    Jésus : Tout est amour divin.
    Einstein : Tout est relatif dans cet espace-temps.
    Moi : Tout est binaire sur ce forum.

  2. #2
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Bonjour,

    Tu peut utiliser la librairie PIL (Python Image Library) pour redimensionner ton image, et ainsi reduire le nombre d'octet.
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  3. #3
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    On peut passer:
    - à un format d'image compressée type jpeg (compression avec perte)
    - à une compression avec zip ou équivalent (compression sans perte)
    - à un redimensionnement comme proposé par deusyss
    - à l'extrème, à un découpage en plusieurs parties (si c'est pertinent par rapport au problème posé): souvent utilisé dans les newsgroups.

    A noter que si le format image est déjà un format compressé (jpeg par exemple), on ne gagne plus rien en ajoutant une compression type zip.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  4. #4
    Membre averti
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Points : 413
    Points
    413
    Par défaut
    Citation Envoyé par deusyss Voir le message
    Bonjour,

    Tu peut utiliser la librairie PIL (Python Image Library) pour redimensionner ton image, et ainsi reduire le nombre d'octet.
    Oui, c'est ce que je fais, mais je me demande comment convertir cette image en bytes, pour pouvoir l'envoyer sur le socket.
    Bouddha : Tout n'est qu'illusion en ce bas monde.
    Jésus : Tout est amour divin.
    Einstein : Tout est relatif dans cet espace-temps.
    Moi : Tout est binaire sur ce forum.

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par stalacta Voir le message
    Oui, c'est ce que je fais, mais je me demande comment convertir cette image en bytes, pour pouvoir l'envoyer sur le socket.
    Une image PIL dispose des méthodes .tobytes, .tostring,...
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Je rajouterai une chose à ce que dit Wiztricks: Lit bien attentivement la doc de PIL, car il y a beaucoup de fonctions cachées/peu connues, que tu pourrais etre tenté de reecrire si tu ne sais pas qu'elles existent.

    Seulement, en faisant cela, peu de chance que tu arrive au même niveau d'efficacité desdites foncionnalitées.
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  7. #7
    Membre averti
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Points : 413
    Points
    413
    Par défaut
    Merci, j'ai trouvé quelque chose (affiche une image réduite de la webcam) :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    import pygame.vidcap as vidcap
    import PIL.ImageTk as ImageTk
    import PIL.ImageEnhance as ImageEnhance
    import tkinter as Tkinter
     
    def GetImage(cam) :
        buffer, width, height = cam.getbuffer()
        print('Avant : ',len(buffer),'\n Taille : ',width,' x ',height)
        if buffer:
            return ImageTk.Image.fromstring('RGB', (width, height), buffer, 'raw', 'BGR', 0, -1)
     
     
    dev = vidcap.new_Dev(0,0)
    img = GetImage(dev)
    img = img.resize((320, 240))
    bit=img.tostring()
    print('Après : ',len(bit),'\n Taille : ', img.size[0],' x ',img.size[1])
     
    decode=ImageTk.Image.fromstring('RGB', (320, 240), bit, 'raw', 'RGB', 0, 0)
     
    f=Tkinter.Tk()
     
    c=Tkinter.Canvas(f,bg='white',width=340, height=260)
    c.pack()
     
    image_def=ImageTk.PhotoImage(decode,(320,240),master=f)
     
    ref=c.create_image(320/2+10,240/2+10,image=image_def)
    c.lift(ref)
     
    f.mainloop()
    Après la compression n'est pas extraordinaire, moi il me faut vraiment une grande compression pour que les images fassent deux fois moins que ce qu'elles font là...
    Sinon, une autre question : comment agrandir des images ? je n'y arrive pas, même en changeant les dimensions.

    EDIT : j'ai trouvé pour agrandir les images, il faut faire = avec le resize
    Par contre la compression ne me va pas, n'y aurait'il pas un autre moyen de compresser ?
    Bouddha : Tout n'est qu'illusion en ce bas monde.
    Jésus : Tout est amour divin.
    Einstein : Tout est relatif dans cet espace-temps.
    Moi : Tout est binaire sur ce forum.

  8. #8
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Bonjour,

    Pour la compression, PIL possède des algo te permettant de choisir le taux de compression en JPG ou PNG entre autre. Cela ne correspond pas à tes besoins?
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  9. #9
    Membre averti
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Points : 413
    Points
    413
    Par défaut
    Je vais regarder ça, ça s'appelle comment ?
    Bouddha : Tout n'est qu'illusion en ce bas monde.
    Jésus : Tout est amour divin.
    Einstein : Tout est relatif dans cet espace-temps.
    Moi : Tout est binaire sur ce forum.

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

Discussions similaires

  1. [WD-2007] Exporter une équation sous forme d'image depuis Word
    Par citizen87 dans le forum Word
    Réponses: 2
    Dernier message: 30/11/2011, 10h06
  2. Compression d'une image sous forme de byte[]
    Par pj_19 dans le forum ASP.NET MVC
    Réponses: 1
    Dernier message: 10/05/2011, 12h37
  3. comment inserer une image sous forms
    Par stefanie_u2 dans le forum Forms
    Réponses: 2
    Dernier message: 12/07/2009, 19h12
  4. PB insertion d'une image sous forms 10g
    Par yanchoux dans le forum Forms
    Réponses: 2
    Dernier message: 01/06/2009, 07h12
  5. comment créer une image sous forme d'eclipse(ronde)
    Par unix27 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 15/05/2005, 22h16

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