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

Réseau/Web Python Discussion :

Imprimer une image GD


Sujet :

Réseau/Web Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 19
    Points : 7
    Points
    7
    Par défaut Imprimer une image GD
    Bonjour,

    après des heures de recherche sur la question, je commence à sécher.

    Je génère une image avec PHP, je m'explique.

    Suite au remplissage d'un formulaire, une image est créée, l'image contient :
    - Un background
    - un code barre, généré par une méthode php
    - Le nom et le prénom récupéré dans les input

    J'utilise Ajax pour récupérer les données et les envoyées à mon contrôleur.

    Mon contrôleur instancie une classe qui elle se charge de générer l'image.

    J'aimerai qu'une fois l'image prête, l'imprimante par défaut soit sélectionnée, que l'impression soit lancée (sans aperçu ou demande de confirmation).

    J'ai essayé pas mal de script javascript, rien n'y fait je passe toujours par un aperçu.

    J'ai trouvé un script en python qui ferait le taf, le problème est le suivant :

    - Lorsque l'image est prête, je suis obligé de l'enregistrer sur le serveur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imagepng($img, $this->_save_path);
    - Le scrypt python est appelé par le systeme (exec(...)) et va rechercher l'image, puis il l'imprime.

    J'aimerai donc pouvoir éviter cette étape. Directement passé mon image GD en paramètre à mon script python et le lui faire imprimer.

    Je vous balance le script actuel :

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    from win32 import win32print
    from pythonwin import win32ui
    from PIL import Image, ImageWin, GdImageFile
     
    def send(gdImg):
     
      # Constants for GetDeviceCaps
      HORZRES = 8
      VERTRES = 10
      LOGPIXELSX = 88
      LOGPIXELSY = 90
      PHYSICALWIDTH = 110
      PHYSICALHEIGHT = 111
      PHYSICALOFFSETX = 112
      PHYSICALOFFSETY = 113
     
      printer_name = win32print.GetDefaultPrinter ()
     
      hDC = win32ui.CreateDC ()
      hDC.CreatePrinterDC (printer_name)
      printable_area = hDC.GetDeviceCaps (HORZRES), hDC.GetDeviceCaps (VERTRES)
      printer_size = hDC.GetDeviceCaps (PHYSICALWIDTH), hDC.GetDeviceCaps (PHYSICALHEIGHT)
      printer_margins = hDC.GetDeviceCaps (PHYSICALOFFSETX), hDC.GetDeviceCaps (PHYSICALOFFSETY)
     
      # C'est ici que je récupère mon image GD passé en argument
      bmp = GdImageFile.open(gdImg)
     
      if bmp.size[0] > bmp.size[1]:
        bmp = bmp.rotate (90)
     
      ratios = [1.0 * printable_area[0] / bmp.size[0], 1.0 * printable_area[1] / bmp.size[1]]
      scale = min (ratios)
     
      hDC.StartDoc (file_name)
      hDC.StartPage ()
     
      dib = ImageWin.Dib (bmp)
      scaled_width, scaled_height = [int (scale * i) for i in bmp.size]
      x1 = int ((printer_size[0] - scaled_width) / 2)
      y1 = int ((printer_size[1] - scaled_height) / 2)
      x2 = x1 + scaled_width
      y2 = y1 + scaled_height
      dib.draw (hDC.GetHandleOutput (), (x1, y1, x2, y2))
     
      hDC.EndPage ()
      hDC.EndDoc ()
      hDC.DeleteDC ()
    Du coup, quand je passe mon image GD en paramètre, il ne se passe rien, aucun retour.

    Merci d'avance !

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 19
    Points : 7
    Points
    7
    Par défaut
    UP !

    Si quelqu'un avec certaines connaissances en Python pouvais me donner un coup demain ..

    J'ai encore un autre soucis :

    Quandje fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imagepng($img, $this->_save_path);
    Ensuite, avec mon shell_exec, j'appel le script Python qui lui va chercher l'image et l'imprime (avec une imprimante type : DTC-1250e).

    Le problème, c'est que j'ai une perte de qualité significative.

    Dans le script posté plus haut, j'ai essayé de cherche d'où le problème pourrait provenir, mais rien pour l'instant.

    J'ai tappé la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printer_dpi = hDC.GetDeviceCaps (LOGPIXELSX), hDC.GetDeviceCaps (LOGPIXELSY)
    Et j'ai (300, 300) comme sortie, ce qui est correcte.

    L'erreur survient peut être d'un autre paramètre éventuellement lorsque l'image est dessiné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    dib = ImageWin.Dib (bmp)
    scaled_width, scaled_height = [int (scale * i) for i in bmp.size]
    x1 = int ((printer_size[0] - scaled_width) / 2)
    y1 = int ((printer_size[1] - scaled_height) / 2)
    x2 = x1 + scaled_width
    y2 = y1 + scaled_height
    dib.draw (hDC.GetHandleOutput (), (x1, y1, x2, y2))
    Merci d'avance

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 19
    Points : 7
    Points
    7
    Par défaut
    Vraiment personne pour me renseigner ?


  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 19
    Points : 7
    Points
    7
    Par défaut
    UP !

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 19
    Points : 7
    Points
    7
    Par défaut
    UP !

    Dernier essais

    Merci d'avance.

Discussions similaires

  1. Imprimer une image simplement
    Par cyril.ppn dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/08/2007, 22h31
  2. Imprimer une image avec java
    Par adilou1981 dans le forum Langage
    Réponses: 5
    Dernier message: 04/08/2006, 15h23
  3. imprimer une image dans un fichier
    Par SegmentationFault dans le forum Delphi
    Réponses: 7
    Dernier message: 02/08/2006, 16h04
  4. [FLASH] Imprimer une image chargée dynamiquement
    Par penchu dans le forum Flash
    Réponses: 2
    Dernier message: 04/01/2006, 16h59

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