DiamondDogHamm: Problem mit ImageRotate

Hallo Leute,
ich hab da ein keines Problem und zwar wird meine Bild bei ImageRotate falsch ausgegeben.
Das Orginalbild sieht so aus:
http://www.diamonddoghamm.de/testimg/logo.png
Das gedrehte Bild sieht so aus:
http://www.diamonddoghamm.de/testimg/index.php

Das Script dazu sieht so aus:

  
$file = "logo.png";  
$src_img = ImageCreateFromPNG($file);  
if($src_img){  
  $src_img = ImageRotate($src_img,30,0);  
  ImagePNG($src_img,"logo_temp.png");  
  echo '<img src="logo_temp.png" />';  
  ImageDestroy($src_img);  
}  

Weiß jemand vll was ich falsch mache und kann mir sagen wo das Problem liegt?
Danke schon mal an alle.

Mfg Dog

  1. Weiß jemand vll was ich falsch mache

    Du verlinkst Beispiele, die nicht existieren.

    und kann mir sagen wo das Problem liegt?

    Korrigiere deine Links, damit dein Problem nachvollziehbar wird.

  2. Hello,

    Das Script dazu sieht so aus:
    [code lang=php]
    $file = "logo.png";
    $src_img = ImageCreateFromPNG($file);
    if($src_img){

    Du überschreibst hier gleich das Bild, während es noch gelesen wird.

    $src_img = ImageRotate($src_img,30,0);

    Das geht bei den GD-Funktionen auf jeden Fall noch schief.

    Du benötigst getrennte Source- und Target-Descriptoren für die Aufgabe.
    Siehe Beispiel unter http://de2.php.net/manual/en/function.imagerotate.php

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hi!

      $src_img = ImageCreateFromPNG($file);
      if($src_img){
      Du überschreibst hier gleich das Bild, während es noch gelesen wird.
        $src_img = ImageRotate($src_img,30,0);
      Das geht bei den GD-Funktionen auf jeden Fall noch schief.
      Du benötigst getrennte Source- und Target-Descriptoren für die Aufgabe.

      Dann müsste ausgerechnet diese Funktion in PHP anders arbeiten als alle anderen Funktionen und zudem noch den Code aus ihrer Aufrufumgebung kennen. Was du da beschreibst, hört sich überhaupt nicht glaubwürdig an. Üblicherweise wird zuerst der Ausdruck berechnet und erst anschließend findet die Variablenzuweisung statt - oder es passiert was völlig anderes mit dem Ergebnis, wenn keine Zuweisung notiert ist. Funktionen liefern ihr Ergebnis nach der Abarbeitung zurück und keinen Stream, der nach und nach Daten liefert.

      Wenn das ein Problem wäre, was du da vermutest, müssten alle Konstrukte à la $foo = $foo + 1; dasselbe Problem haben.

      Lo!

    2. Hi!

      So, jetzt nochmal mit Test. Das im OP verlinkte Bild liegt dort zwar nicht mehr, aber man kann mit dem Header-Bild der Seite ähnliche Effekte sehen.

      Du überschreibst hier gleich das Bild, während es noch gelesen wird.
      Du benötigst getrennte Source- und Target-Descriptoren für die Aufgabe.

      Das ist es auf alle Fälle nicht. Auch mit zweiter Variable ergibt sich erwartungsgemäß kein Unterschied im Ergebnis. Das Problem wird vielmehr die im Bild[*] enthaltene Alpha-Information sein, womit die verwendete Funktion wohl nicht klarkommt. Wenn man nach diesem Stichwort in den Userkommentaren sucht, findet man auch zwei weitere Funktionen, die zur Lösung verhelfen.

      [*] jedenfalls im Header-Bild, und so nehme ich an, dass sie auch im Problembild enthalten war.

      Lo!