2017-07-07 5 views
0

affichée J'ai deux sites (même serveur) où un simple rectangle est dessiné à l'aide ImagickDraw et fonctionnent très bien sur l'une et échoue sur la deuxième avec l'erreur -ImagickDraw Rectangle - image ne peut pas être erreur

L'image " http://site_name/imagick/img?method=placeholder&params=258,150 "ne peut pas être affiché car il contient une erreur.

Fondamentalement, ce code est de prendre method et il params (hauteur & largeur) de l'URL et dessiner l'image.

$params = explode(",", $_GET["params"]); 
$width = (int) $params[0]; //258 
$height = (int) $params[1]; //150 

if ($method == "placeholder") { //This is true $method is set to placeholder 
    $image = new Imagick(); 
    $image->newImage($width, $height, "#707070"); 
    $image->setImageFormat("png"); 

    $x = 0; 
    $y = 0; 
    $size = 40; 
    $draw = new ImagickDraw(); 

    while ($y < $height) { 
    $draw->setFillColor("#808080"); 

    $points = array(
     array("x" => $x, "y" => $y), 
     array("x" => $x + $size, "y" => $y), 
     array("x" => $x + $size * 2, "y" => $y + $size), 
     array("x" => $x + $size * 2, "y" => $y + $size * 2), 
    ); 
    $draw->polygon($points); 

    $points = array(
     array("x" => $x, "y" => $y + $size), 
     array("x" => $x + $size, "y" => $y + $size * 2), 
     array("x" => $x, "y" => $y + $size * 2), 
    ); 
    $draw->polygon($points); 

    $x += $size * 2; 
    if ($x > $width) { 
     $x = 0; 
     $y += $size * 2; 
    } 
    } 

    $draw->setFillColor("#B0B0B0"); 
    $draw->setFontSize($width/5); 
    $draw->setFontWeight(800); 
    $draw->setGravity(Imagick::GRAVITY_CENTER); 
    $draw->annotation(0, 0, $width . " x " . $height); 

    $image->drawImage($draw); 

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

J'ai vérifié la mémoire tampon avant-tête et il est vide aussi essayé ob_clean() - ne fonctionne toujours pas.

Vérifié pour les espaces blancs dans le fichier que j'ai trouvé qu'il affecte le fichier image - mais il n'y a pas d'espace blanc présent.

Des idées ce qui pourrait être mauvais ici ou de toute façon pour suivre les erreurs?

+0

Peut-être vérifier le journal du serveur pour les erreurs, ou commenter le 'header' et voir ce qui est retourné dans le navigateur. – emcconville

+0

Merci pour le commentaire, mais l'erreur était l'espace lui-même, posté comme une réponse. – jitendrapurohit

Répondre

0

C'était en effet l'espace mais pas dans le même fichier (bizarre bizarre bizarre).

Vérifié pour tous les fichiers php inclus dans le projet -

include_once('file_name.php'); 

De multiples fichiers, il y avait un tel fichier (fichier de paramètres qui contient le db_name, base url, etc) qui avait un espace avant <?php marque. Donc, si quelqu'un obtient cette erreur, assurez-vous que tous les fichiers php sont sans espace. Il gâche l'image png générée.