Ich habe einen PHP-Code geschrieben, der GD auf einem Ubuntu-Rechner (PHP 5.5.9) verwendet und ihn auf Amazon EC2 mit Amazon Linux (PHP 5.5 0,31), und ich bin immer ganz unterschiedliche Ergebnisse aus dem Code aus der gleichen Eingabedatendatei (ich bin nur imagecreatefromstring()
verwendet;. $data
enthält den Inhalt einer JPEG-Datei)Eine Reihe von Bild/GD-Problemen: Zuschneiden, Einstellen der Farbe und Transparenz
- Bevor ich geändert Maschinen wäre es ändere das Weiß zu Transparent. Das ändert sich nicht mehr.
- Es wurde verwendet, um die Grafik perfekt zu beschneiden. Jetzt lässt es links etwas weiß und schneidet das Bild ein wenig rechts ab.
- Auf der linken Seite befindet sich eine dünne schwarze Linie.
- Ich kann nicht einmal scheinen, das Bild zu ändern, eine Farbe mit
imagecolorset()
.
Hier ist der Code:
if ($isFileString) {
$src2 = imagecreatefromstring($data);
} else {
$src2 = imagecreatefromjpeg($data);
}
// This was an attempt to get it to recognize transparent.
if (!unlink ("../drive/sigs/tmp.png"))
die("Failed to delete tmp.png");
imagepng($src2, "../drive/sigs/tmp.png");
imagedestroy($src2);
$src = imagecreatefrompng("../drive/sigs/tmp.png");
imagealphablending($src, false);
imagesavealpha($src, true);
for ($i=0; $i< 1024; $i++) {
echo $i;
echo print_r(imagecolorsforindex($src, $i));
imagecolorset($src, $i, 255, 255, 255,255);
echo print_r(imagecolorsforindex($src, $i));
echo "<BR>";
}
$src = imagecropauto($src, IMG_CROP_WHITE);
$white = imagecolorallocate($src, 255, 255, 255);
imagecolortransparent($src, $white);
$src = imagerotate($src, -90, 0);
EDIT Als Beispiel für meine nicht imagecolorset()
in der Lage zu bekommen eine Änderung in der Datei zu machen, unten ist die Ausgabe von der Schleife auf $i
:
1Array ([red] => 0 [green] => 0 [blue] => 1 [alpha] => 0) 1Array ([red] => 0 [green] => 0 [blue] => 1 [alpha] => 0) 1
2Array ([red] => 0 [green] => 0 [blue] => 2 [alpha] => 0) 1Array ([red] => 0 [green] => 0 [blue] => 2 [alpha] => 0) 1
3Array ([red] => 0 [green] => 0 [blue] => 3 [alpha] => 0) 1Array ([red] => 0 [green] => 0 [blue] => 3 [alpha] => 0) 1
EDIT2
Ein wenig mehr Informationen: Ich überprüfte die gd-Versionen (php -i | grep -i gd
). Ich bin überrascht, die Ubuntu-Box mit GD-Version 2.1.1-dev und die EC2-Box mit "gebündelt (2.1.0-kompatibel)" zu sehen. Ich bin neu bei GD, deshalb bin ich mehr geneigt zu glauben, dass dies meine Schuld ist, als dass Amazon eine schlechte Version von GD liefert.
EDIT3
Es scheint kein Speicherproblem zu sein. Die
memory_get_peak_usage()
meldet etwa 35 MB.Der einzige Unterschied, den
gd_info()
meldet, ist die Versionsnummer.