2017-07-07 5 views
0

Ich habe zwei Websites (denselben Server), wo ein einfaches Rechteck mit ImagickDraw gezogen wird und es auf dem zweiten auf dem einen und schlägt mit dem Fehler gut funktionieren -ImagickDraw Rectangle - Bild kann nicht Fehler angezeigt

Das Bild " http://site_name/imagick/img?method=placeholder&params=258,150 "kann nicht angezeigt werden, weil es einen Fehler enthält.

Im Allgemeinen, was Code tut, ist es nimmt method und params (Höhe & Breite) von der URL und das Bild zeichnen.

$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; 
} 

Ich habe den Puffer vor dem Header überprüft und es ist leer ob_clean() auch versucht - immer noch nicht funktioniert.

In der Datei nach Leerzeichen gesucht, da ich festgestellt habe, dass sie die Bilddatei beeinflussen - aber es ist kein weißer Bereich vorhanden.

Irgendwelche Ideen, was hier oder überhaupt falsch sein könnte, um die Fehler zu verfolgen?

+0

Vielleicht überprüfen Sie das Serverprotokoll auf Fehler, oder kommentieren Sie die 'header' und sehen Sie, was im Browser zurückgegeben wird. – emcconville

+0

Danke für den Kommentar, aber der Fehler war das Leerzeichen selbst, als Antwort geschrieben. – jitendrapurohit

Antwort

0

Es war in der Tat das Leerzeichen, aber nicht in der gleichen Datei (seltsam komisch komisch).

Geprüft für alle PHP-Dateien in das Projekt mit -

include_once('file_name.php'); 

aus mehreren Dateien, gab es eine solche Datei (Einstellungsdatei, die die db_name enthält, base url usw.), die vor <?php einen Platz hatte, Etikett. Also, wenn jemand diesen Fehler bekommt, stellen Sie sicher, dass alle PHP-Dateien whitespace frei sind. Es vermasselt das generierte PNG-Bild.