2016-12-06 3 views
0

Je travaille sur un projet où je dois convertir du texte d'instructions en images et les envoyer par email.La conversion de texte en image renvoie une petite boîte blanche - php

Pour des fins d'essai, je suis d'essayer un code simple pour produire un texte converti en une image sur le navigateur, mais il est toujours retourner une petite boîte blanche comme ceci: enter image description here

J'ai GD installé sur mon serveur. Voici mon code:

<?php 

header("Content-type: image/png"); 

function drawImage() 
{ 
    $width = 0; 
    $height = 0; 
    $offset_x = 0; 
    $offset_y = 0; 
    $bounds = array(); 
    $image = ""; 

    $msg = "Some Sample Text...."; 
    $font = "ARIAL.TTF"; 
    $size = 24; // default font size. 
    $rot = 0; // rotation in degrees. 
    $pad = 0; // padding. 
    $transparent = 1; // transparency set to on. 
    $red = 0; // black text... 
    $grn = 0; 
    $blu = 0; 
    $bg_red = 255; // on white background. 
    $bg_grn = 255; 
    $bg_blu = 255; 

    // get the font height. 
    $bounds = ImageTTFBBox($size, $rot, $font, "W"); 
    if ($rot < 0) 
    { 
     $font_height = abs($bounds[7]-$bounds[1]);  
    } 
    else if ($rot > 0) 
    { 
    $font_height = abs($bounds[1]-$bounds[7]); 
    } 
    else 
    { 
     $font_height = abs($bounds[7]-$bounds[1]); 
    } 
    // determine bounding box. 
    $bounds = ImageTTFBBox($size, $rot, $font, $msg); 
    if ($rot < 0) 
    { 
     $width = abs($bounds[4]-$bounds[0]); 
     $height = abs($bounds[3]-$bounds[7]); 
     $offset_y = $font_height; 
     $offset_x = 0; 
    } 
    else if ($rot > 0) 
    { 
     $width = abs($bounds[2]-$bounds[6]); 
     $height = abs($bounds[1]-$bounds[5]); 
     $offset_y = abs($bounds[7]-$bounds[5])+$font_height; 
     $offset_x = abs($bounds[0]-$bounds[6]); 
    } 
    else 
    { 
     $width = abs($bounds[4]-$bounds[6]); 
     $height = abs($bounds[7]-$bounds[1]); 
     $offset_y = $font_height;; 
     $offset_x = 0; 
    } 

    $image = imagecreate($width+($pad*2)+1,$height+($pad*2)+1); 
    $background = ImageColorAllocate($image, $bg_red, $bg_grn, $bg_blu); 
    $foreground = ImageColorAllocate($image, $red, $grn, $blu); 

    if ($transparent) ImageColorTransparent($image, $background); 
    ImageInterlace($image, false); 

    // render the image 
    ImageTTFText($image, $size, $rot, $offset_x+$pad, $offset_y+$pad, $foreground, $font, $msg); 

    // output PNG object. 
    imagePNG($image); 
} 
drawImage(); 
?> 

Répondre

1

Est-ce aussi simple que changer:

$image = imagereate 

à

$image = imagecreate 

On dirait une faute de frappe pour moi.

+0

Merci pour votre aide! En fait c'est correct dans le code original, et j'ai corrigé mon post, désolé pour ça. –