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

EDI, CMS, Outils, Scripts et API PHP Discussion :

[Forum] Création d'image en PHP


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Avril 2008
    Messages : 19
    Points : 23
    Points
    23
    Par défaut [Forum] Création d'image en PHP
    Bonjour

    Je travaille sur projet de création de signature de document en ligne. Pour cela j'utilise le function sigJsonToImage télécharger sur le site thomasjbradley/signature-to-image

    Tout fonctionne à merveille, les signatures sont sauvegardées sous forme d'image PNG sans aucun problème. j'aimerai cependant que le fond de l'image de la signature soit transparent et cela fait plusieurs jour que je bloque.
    Voila le code de la page, je pense que je doit intervenir sur la ligne ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bgColour' => array(0xff, 0xff, 0xff)
    ' ou ajouter une ligne pour indiquer la transparence du fond, mais je n'y arrive pas.

    Quelqu'un peut-il m'aider ou me dire que cela est impossible

    Code de la page :
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
     
    <?php
    /**
     *  Signature to Image: A supplemental script for Signature Pad that
     *  generates an image of the signature’s JSON output server-side using PHP.
     *
     *  @project ca.thomasjbradley.applications.signaturetoimage
     *  @author Thomas J Bradley <hey@thomasjbradley.ca>
     *  @link http://thomasjbradley.ca/lab/signature-to-image
     *  @link http://github.com/thomasjbradley/signature-to-image
     *  @copyright Copyright MMXI–, Thomas J Bradley
     *  @license New BSD License
     *  @version 1.1.0
     */
     
    /**
     *  Accepts a signature created by signature pad in Json format
     *  Converts it to an image resource
     *  The image resource can then be changed into png, jpg whatever PHP GD supports
     *
     *  To create a nicely anti-aliased graphic the signature is drawn 12 times it's original size then shrunken
     *
     *  @param string|array $json
     *  @param array $options OPTIONAL; the options for image creation
     *    imageSize => array(width, height)
     *    bgColour => array(red, green, blue) | transparent
     *    penWidth => int
     *    penColour => array(red, green, blue)
     *    drawMultiplier => int
     *
     *  @return object
     */
    function sigJsonToImage ($json, $options = array()) {
      $defaultOptions = array(
        'imageSize' => array(400, 60)
        ,'bgColour' => array(0xff, 0xff, 0xff) 
        ,'penWidth' => 1
        ,'penColour' => array(0x14, 0x53, 0x94)
        ,'drawMultiplier'=> 16
      );
     
      $options = array_merge($defaultOptions, $options);
     
      $img = imagecreatetruecolor($options['imageSize'][0] * $options['drawMultiplier'], $options['imageSize'][1] * $options['drawMultiplier']);
     
      if ($options['bgColour'] == 'transparent') {
        imagesavealpha($img, true);
        $bg = imagecolorallocatealpha($img, 0, 0, 0, 127);
      } else {
        $bg = imagecolorallocate($img, $options['bgColour'][0], $options['bgColour'][1], $options['bgColour'][2]);
      }
     
      $pen = imagecolorallocate($img, $options['penColour'][0], $options['penColour'][1], $options['penColour'][2]);
      imagefill($img, 0, 0, $bg);
     
      if (is_string($json))
        $json = json_decode(stripslashes($json));
     
      foreach ($json as $v)
        drawThickLine($img, $v->lx * $options['drawMultiplier'], $v->ly * $options['drawMultiplier'], $v->mx * $options['drawMultiplier'], $v->my * $options['drawMultiplier'], $pen, $options['penWidth'] * ($options['drawMultiplier'] / 2));
     
      $imgDest = imagecreatetruecolor($options['imageSize'][0], $options['imageSize'][1]);
     
      if ($options['bgColour'] == 'transparent') {
        imagealphablending($imgDest, false);
        imagesavealpha($imgDest, true);
      }
     
      imagecopyresampled($imgDest, $img, 0, 0, 0, 0, $options['imageSize'][0], $options['imageSize'][0], $options['imageSize'][0] * $options['drawMultiplier'], $options['imageSize'][0] * $options['drawMultiplier']);
      imagedestroy($img);
     
      return $imgDest;
    }
     
    /**
     *  Draws a thick line
     *  Changing the thickness of a line using imagesetthickness doesn't produce as nice of result
     *
     *  @param object $img
     *  @param int $startX
     *  @param int $startY
     *  @param int $endX
     *  @param int $endY
     *  @param object $colour
     *  @param int $thickness
     *
     *  @return void
     */
    function drawThickLine ($img, $startX, $startY, $endX, $endY, $colour, $thickness) {
      $angle = (atan2(($startY - $endY), ($endX - $startX)));
     
      $dist_x = $thickness * (sin($angle));
      $dist_y = $thickness * (cos($angle));
     
      $p1x = ceil(($startX + $dist_x));
      $p1y = ceil(($startY + $dist_y));
      $p2x = ceil(($endX + $dist_x));
      $p2y = ceil(($endY + $dist_y));
      $p3x = ceil(($endX - $dist_x));
      $p3y = ceil(($endY - $dist_y));
      $p4x = ceil(($startX - $dist_x));
      $p4y = ceil(($startY - $dist_y));
     
      $array = array(0=>$p1x, $p1y, $p2x, $p2y, $p3x, $p3y, $p4x, $p4y);
      imagefilledpolygon($img, $array, (count($array)/2), $colour);
    }

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    c'est marqué dans le mode d'emploi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bgColour => 'transparent'
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Avril 2008
    Messages : 19
    Points : 23
    Points
    23
    Par défaut Transparence
    Bonsoir

    çà fonctionne, je devait être très fatigué lors de lecture du mode d'emploi.

    Merci encore

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

Discussions similaires

  1. wamp et création d'image en php
    Par ptinavir dans le forum Langage
    Réponses: 12
    Dernier message: 03/10/2010, 14h05
  2. [Forum] Création d'un forum en PHP
    Par johnnyaque dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 10/03/2007, 16h34
  3. création d'image (comme avec GD en php)
    Par Tukan dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/10/2006, 20h46

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