Thumbnails haben falsche Farben

Hi,
ich habe mir ein Script mit PHP geschrieben, mit dem ich hochgeladene Bilder verkleinern kann. Weil das mit PHP so einfach
und vor allem kostenlos gehen soll, habe ich als ASPler das Experiment mitgemacht.

Nun die Bilder werden zwar verkleinert, aber die Farbwerte stimmen nicht. Was habe ich da falsch gemacht oder wer hat das was brauchbares ohne zusätzliche Libs zu installieren ???
Danke Euch!

$vpic =$zielordner.$BN2;
$imm = getimagesize($vpic);
$z = $imm[0]/100;
$img = ImageCreateFromJPEG($vpic);
$thumb = ImageCreate($imm[0]/$z, $imm[1]/$z);
imagecopyresized($thumb, $img, 0, 0, 0, 0, $imm[0]/$z, $imm[1]/$z, $imm[0], $imm[1]);
imagejpeg($thumb, $zielordner.$BN1); // Ausgeben und speichern des Thumbnails
imagedestroy($thumb);
imagedestroy($img);

ImageCreate erzeugt ein Palettenbild (256 Farben), was verheerend aussieht. Schau mal nach ImageCreateTrueColor bei PHP, in der online doku stehen auch viele comments zu diesem Thema… die true color Funktionalität gibts allerdings erst ab der Grafikbibliothek GD > 2.0.1(?) die mit PHP > 4.3.0 mitgeliefert wird oder von Hand eingebaut werden muss.

Grüße
Bruno

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ich stimme Bruno nur halb zu. Ich vermute es handelt sich um das GD2,
imagecreate() macht fehler (komplett falsche farben, nicht zu vergleichen mit
256-Farb-Bildern). Verwende statt imagecrate() lieber -> imagecreatetruecolor(),
welches ab der GD2 verwendet werden sollte!!!

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ich stimme Bruno nur halb zu. Ich vermute es handelt sich um
das GD2,
imagecreate() macht fehler (komplett falsche farben, nicht zu
vergleichen mit
256-Farb-Bildern). Verwende statt imagecrate() lieber ->
imagecreatetruecolor(),
welches ab der GD2 verwendet werden sollte!!!

Ich stimme Bruno nur halb zu. Ich vermute es handelt sich um
das GD2,
imagecreate() macht fehler (komplett falsche farben, nicht zu
vergleichen mit
256-Farb-Bildern). Verwende statt imagecrate() lieber ->
imagecreatetruecolor(),
welches ab der GD2 verwendet werden sollte!!!

Damit stimmst du mir doch ganz zu :smile:
ImageCreate macht übrigens keine Fehler, sondern ist ein 256 Farben Bild… allerdings je nach Palette ist das Ergebnis entsprechend verheerend.

Man kann da bischen rumtricksen um ein einigermaßen akzeptables Ergebnis zu erhalten.
Falls du kein gd2 zur Verfügung hast kannst du mal in meinem Script phpwebalbum schauen wie das gehen könnte (habe das aus den comments bei php.net übernommen und ein wenig modifiziert für meine Zwecke). Die interessante Funktion heißt imagecopyresamplebicubic aus:

http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/phpwe…

Grüße
Bruno

Nein, das meine ich nicht. Ich meine einen BUG.
Mein Provider hat sehr lange Zeit die GD 1.8 benutzt. Mein Thumb-Archiv
funktionierte damit Tadellos (trotz der 256 Farben). Nach dem Update des
Providers auf die neuere GD 2.+ stimmte nicht eine Farbe mehr (die Palette schien
sich auf grau und dunkelblau zu beschränken) :smile:

Deshalb meinte ich: Ab GD 2 lieber mit truecolor arbeiten.

Nach dem
Update des
Providers auf die neuere GD 2.+ stimmte nicht eine Farbe mehr
(die Palette schien
sich auf grau und dunkelblau zu beschränken) :smile:

Das liegt daran, dass wenn in der Palette keine Farben mit imagecolorallocate allokiert werden, der sich die ersten 256 verschiedenen Farben greift von deinem Bild und die mist ziemlich ähnlich sind… wusste allerdings nicht dass das in GD

YES das war es :smile:
Hi,
herzlichen Dank an Euch. Mit truecolor geht es wunderbar.
PHP steigt nun in meiner Beliebtheitsskala nach oben :smile:

cu
NIP