imagecopyresized und Farbprobleme
Hi Leute,
ich hab wieder mal eine interessante Frage zu php. Folgende Problemstellung: Ich will mir Thumbnailgrafiken für eine Website erstellen, ohne ein vorhandenes Bild mit den HTML Tags zu zerren. Statt dessen versuche ich mit einem php script eine kleine Version des Bildes zu erzeugen. An sich funktioniert alles bestens blos: Die imagecopyresized Funktion bringt mir die Farben der Bilder völlig durcheinander. Daher habe ich kurzerhand - wir sehen eshandelt sich um die brute Force methode - versucht sämtliche Farbwerte mit imagecolorallocate und drei geschachtelten for-schleifen zu definieren (mir schien das Problem mit dem Vergeben der Farbwerte zusammen zu hängen). Blos: Der einzige Effekt bestand darin daß das Bild am Ende Blau ausgegeben wurde......
Hat jemand einen Lösungsvorshclag oder eine ähnliche Problemstellung?
Hier noch der Code der Klasse, mit deren Hilfe ich das Bild verkleinere:
class CPicture
{
public function Preview($file_name)
{
$bildgroesse = getImagesize($file_name);
$bildbreite = $bildgroesse[0]; // Hier ermittle ich Breite und Höhe der Grafik
$bildhohe = $bildgroesse[1];
$bildbreite_klein = $bildbreite/2; // Hier soll das ganze mal halbiert werden.....
$bildhohe_klein = $bildhohe/2;
$punkt_position = strrpos($file_name,'.');
//Um den Bildnamen zu verändern befreie ich ihn von lästigen Endungen
$bild_name = substr($file_name,0,$punkt_position);
$bild_name_klein = $bild_name."small";
if($bildgroesse['mime']=='image/jpeg')
{
$image = imagecreatefromjpeg($file_name);
$bildendung = ".jpg";
}
if($bildgroesse['mime']=='image/gif')
{
$image = imagecreatefromgif($file_name);
$bildendung = ".gif";
}
$bild_name_klein.=$bildendung; //Hier kommt die Endung wieder dazu.....
$image_neu = imagecreate($bildbreite_klein,$bildhohe_klein);
//Das erstellt die Zeichenfläche....
for($x=0;$x<=255;$x++) //Erste Schleife für R-Farbwerte
{
imagecolorallocate($image_neu,$x,$y,$z);
for($y=0;$y<=255;$y++) //Zweite Schleife für G-Farbwerte
{
imagecolorallocate($image_neu,$x,$y,$z);
for($z=0;$z<=255;$z++) //Dritte Schelife für B-Farbwerte
{
imagecolorallocate($image_neu,$x,$y,$z);
}
}
}
imagecopyresized($image_neu,$image,0,0,0,0,$bildbreite_klein,$bildhohe _klein,$bildbreite,$bildhohe);
//Hier ertselle ich die kleine Version..-...
imagegif($image_neu,$bild_name_klein);
//Und hier geb ich es als Datei aus... Das Ergebnis ist ein Blaues Bild.....
}
}
|