BadKiss
Mitglied
Hallo zusammen,
leider hab ich mal wieder ein kleines Problem und komm einfach nicht darauf, wie ich es lösen kann
Hoffe einer von euch kann mir helfen?
Ich erzeuge "Karten" mit PHP - also ich nehme den Rahmen, färbe ihn ein und packe ein Bild in die Mitte.
Bisher hat das alles auch immer super funktioniert, dann hatte mein Hoster Serverprobleme und das Problem fing an.
Die Bilder wurden nur zur Hälfte oder gar nicht angezeigt.
Nun bin ich auf einen vServer gezogen - habe aber leider immer noch das selbe Problem.
Soviel hab ich schon rausgefunden:
Mache ich am Schluss statt ImagePNG($image); ein ImageGIF($image); wird das Bild ganz angezeigt, jedoch gibt es einen riesen Qualitätsverlust und es wird "krisselig".
Lasse ich das Bild in der Mitte weg (welches PNG ist), dann wird der Rest der Karte ebenfalls angezeigt, auch ohne Probleme.
Somit vermute ich einfach mal, dass mein Server evtl PNG-Bilder nicht richtig darstellen/erzeugen kann!?
Hier mal mein Code aufs minimalste reduziert:
Und im Anhang noch Bilder wie es falsch aussieht (deckfalsch.png), als gif (deckgif.png) und wie es aussehen sollte (deckrichtig.png).
Habe die Transparenz auch mal weggelassen, hat sich leider nichts geändert =/
Ich hoffe, jemand von euch hat da eine Idee und kann mir helfen =/
leider hab ich mal wieder ein kleines Problem und komm einfach nicht darauf, wie ich es lösen kann
Hoffe einer von euch kann mir helfen?
Ich erzeuge "Karten" mit PHP - also ich nehme den Rahmen, färbe ihn ein und packe ein Bild in die Mitte.
Bisher hat das alles auch immer super funktioniert, dann hatte mein Hoster Serverprobleme und das Problem fing an.
Die Bilder wurden nur zur Hälfte oder gar nicht angezeigt.
Nun bin ich auf einen vServer gezogen - habe aber leider immer noch das selbe Problem.
Soviel hab ich schon rausgefunden:
Mache ich am Schluss statt ImagePNG($image); ein ImageGIF($image); wird das Bild ganz angezeigt, jedoch gibt es einen riesen Qualitätsverlust und es wird "krisselig".
Lasse ich das Bild in der Mitte weg (welches PNG ist), dann wird der Rest der Karte ebenfalls angezeigt, auch ohne Probleme.
Somit vermute ich einfach mal, dass mein Server evtl PNG-Bilder nicht richtig darstellen/erzeugen kann!?
Das Verrückte ist allerdings: Zuhause auf meinem PC und bei mehr als der Hälfte meiner User wird alles richtig dargestellt - am ArbeitsPC und einem kleinen Teil der User sieht es eben so abgehackt aus bzw es erscheint gar kein Bild.
Hier mal mein Code aufs minimalste reduziert:
PHP:
$hex = $row['sets_color'];
$r = substr($hex, 0, 2);
$g = substr($hex, 2, 2);
$b = substr($hex, 4, 2);
$red = hexdec($r);
$green = hexdec($g);
$blue = hexdec($b);
if($row['sets_color2'] != '') {
$hex = $row['sets_color2'];
$r = substr($hex, 0, 2);
$g = substr($hex, 2, 2);
$b = substr($hex, 4, 2);
$red2 = hexdec($r);
$green2 = hexdec($g);
$blue2 = hexdec($b);
} else {
$red2 = $red;
$green2 = $green;
$blue2 = $blue;
}
header("Content-Type: image/png");
$image = imagecreatetruecolor(114,66);
//$image = imagecreate(114,66);
// links nach rechts Verlauf
$height = 66;
$width = 144;
$right_color = array($red, $green, $blue);
$left_color = array($red2, $green2, $blue2);
$x1 = 0;
$y1 = 0;
$color0=($left_color[0]-$right_color[0])/$width;
$color1=($left_color[1]-$right_color[1])/$width;
$color2=($left_color[2]-$right_color[2])/$width;
for ($i=0;$i<=$width;$i++)
{
$red=$left_color[0]-floor($i*$color0);
$green=$left_color[1]-floor($i*$color1);
$blue=$left_color[2]-floor($i*$color2);
$newcolor = imagecolorexact($image, 0, 0, 0);
$col= imagecolorallocate($image, $red, $green, $blue);
imagecolorset($image, $newcolor, $x1+$i, $y1, $x1+$i);
imageline($image, $x1+$i, $y1, $x1+$i, $y1+$height, $col);
}
// l-n-r Verlauf ende
if($row['sets_cat_name'] == 'Special') {
$rahmen = ImageCreateFromGIF("/PFADZURDATEI/card/deck_special_innen.gif");
} else {
$rahmen = ImageCreateFromPNG("/PFADZURDATEI/card/deck_innen.png");
}
$card = ImageCreateFromPNG("/PFADZURDATEI/card/cards/".$row['sets_name']."/".$row['sets_name']."deck.png");
ImageCopy($image,$card,3,3,0,0,108,54);
$Textfarbe = ImageColorAllocate($image, $red, $green, $blue);
$Textfarbe2 = ImageColorAllocate($image, $red2, $green2, $blue2);
$newcolor = imagecolorexact($rahmen, 0, 0, 0);
imagecolorset($rahmen, $newcolor, $red2, $green2, $blue2);
$newcolor2 = imagecolorexact($rahmen, 16, 16, 16);
imagecolorset($rahmen, $newcolor2, $red, $green, $blue);
$Trans = ImageColorAllocate($image, 0, 255, 0);
ImageColorTransparent($image, $Trans);
ImageCopy($image,$rahmen,0,0,0,0,114,66);
$font = dirname($_SERVER["SCRIPT_FILENAME"]) . "/SG10.ttf";
$font2 = dirname($_SERVER["SCRIPT_FILENAME"]) . "/04B_03__.TTF";
$size = ImageTTFBBox(6, 0, $font2, $set);
$x = (116-($size[2]-$size[0]))/2;
if(isset($_COOKIE['cardtemplate'])) {
if($_COOKIE['cardtemplate'] == 6) {
$size = ImageTTFBBox(6, 0, $font2, $set);
$x = (116-($size[2]-$size[0]))/2;
ImageTTFGradient($image, 6, 0, $x, 66, $Textfarbe2, $font2, $set, $Textfarbe2,$Textfarbe);
} elseif($_COOKIE['cardtemplate'] == 3) {
ImageTTFGradient($image, 6, 0, $x, 63, $Textfarbe2, $font2, $set, $Textfarbe2,$Textfarbe);
} else {
ImageTTFGradient($image, 6, 0, $x, 64, $Textfarbe2, $font2, $set, $Textfarbe2,$Textfarbe);
}
} else {
ImageTTFGradient($image, 6, 0, $x, 64, $Textfarbe2, $font2, $set, $Textfarbe2,$Textfarbe);
}
//ImageGIF($image);
ImagePNG($image);
ImageDestroy($image);
Und im Anhang noch Bilder wie es falsch aussieht (deckfalsch.png), als gif (deckgif.png) und wie es aussehen sollte (deckrichtig.png).
Habe die Transparenz auch mal weggelassen, hat sich leider nichts geändert =/
Ich hoffe, jemand von euch hat da eine Idee und kann mir helfen =/