2011-01-11 7 views
4

Ich habe ein Problem mit GD, wenn ich Bilder mit PHP erstellt.GD: php imagepng erzeugt Leerzeichen in Bild

Die seltsame Sache ist, dass es auf einem Server mit PHP Version 5.3.1 funktioniert, aber nicht auf PHP Version 5.2.14. (Ich bin nicht sicher, ob es die PHP-Version oder die GD-Bibliothek, die dies tun.)

alt text Diese Datei mit convert erstellt und in einem Verzeichnis in captcha::get_file() gespeichert.

alt text Und diese Datei erzeugt mit imagecreatefrompng() und imagepng()

alt text habe ich einige kleine Änderungen am Skript und das GIF-Format gemacht. Aber es gibt immer noch ein Problem mit dem Png

Was verursacht dies, und wie kann ich es beheben? Hier

ist die phpcode:

<?php 
session_start(); 
require_once("./captcha.php"));  

// creates the image with convert and returns the location of the picture 
// document_root/picture/picture.png 
$picloc = captcha::get_file(); 

$image = @imagecreatefrompng($picloc); 

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

imagepng($image); 

imagedestroy($image); 

unlink($picloc); 
?> 
+1

Odd, noch nie so etwas zuvor gesehen. Sie müssen etwas vom Captcha-Code zeigen, denke ich ... Was passiert, wenn Sie die 'content-length' weglassen? Was passiert, wenn Sie ein anderes Format wie gif verwenden? –

+0

Ich habe versucht, die Länge des Inhalts, aber nichts geändert. Ich werde das gif versuchen, aber es wird das Problem nicht beheben. –

+0

Was ist das: http://www.php.net/manual/en/function.imagecreatefrompng.php#90364 (mit True-Colors) –

Antwort

0

nicht positiv, aber das Problem in Ihrem Content Length-Header sein kann.

header('Content-Length: ' . strlen($image)); 

An dieser Stelle in Ihrem Code ist $ image ein Ressourcedatentyp, kein String. Versuchen Sie einfach, die Headerzeile für die Inhaltslänge zu entfernen und sehen Sie, was passiert.

+0

Es hat nichts geändert –

+0

das obige bleibt wahr. strlen wird verwendet, um die Länge einer Zeichenkette herauszufinden, und $ image ist keine Zeichenkette. – dqhendricks