gd lib tranparenz png 24 beibehalten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • gd lib tranparenz png 24 beibehalten

    guude -> also bevor ich das ganz php manual studiere und feststelle das es mal wieder viel verwirrung zu diesem thema gibt frag ich doch mal in meinem lieblingsforum ob da nicht jemand bescheid was. thema gd lib 2+ und tranparente pngs auf jpg mergen und auch als jpg wieder on the fly ausgeben. mit 8-bit pngs komm ich klar aber bei 24-bit such ich verzweifelt die funktion die mir den alphawert bestimme um die tranparenz beizubehalten. hier is mal der code ->



    PHP-Code:
    if(is_file($bild)):

        
    $org_bild imagecreatefromjpeg($bild);
        
    $width imagesx($org_bild);
        
    $height imagesy($org_bild);
        
    $new_bild imagecreatetruecolor($width,$height);
        
    imagecopyresampled($new_bild,$org_bild,0,0,0,0,$width,$height,$width,$height);
        if(
    is_file($watermark)):
            
    $wm imagecreatefrompng($watermark);
            
    $watermark_x  = ($width 2) - (imagesx($wm) / 2);
            
    $watermark_y  = ($height 2) - (imagesy($wm) / 2);

            if(
    imagecolorstotal($wm) < 255):
                
    $trans imagecolorat($wm,11);
                
    imagecolortransparent($wm,$trans);
                
    imagecopymerge($new_bild,$wm,$watermark_x,$watermark_y,0,0,imagesx($wm),imagesy($wm),25);
            else:
                                           
    //png 24 verabeiten
            
    endif;
        else:
            
    trigger_error("is_file($watermark) -> Wasszeichen wurde nicht gefunden",E_USER_ERROR);
        endif;
        
    header("Content-Type: image/jpg");
        
    imagejpeg($new_bild,"","66");
        
    imagedestroy($org_bild);
        
    imagedestroy($wm);
    else:
        
    //alternativ bild
    endif; 

  • #2
    du mußt dem bild, in das alles hineinkopiert wird, vor dem kopieren mitteilen, daß ... du die transparenz erhalten willst ...
    PHP-Code:
    imagealphablending($handletrue); 
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      ? das ändert bei mir nix -> laufen müsste es (bundled (2.0.28 compatible))

      ich hab deine vorschlag getestet - hat aber nix bewirkt? kannst de mal genau sagen wo du das einfügst. by the way ich hab grad festgetellt das imagecolorstotal() bei png 24 den wert 0 zurückgibt? komisch ist das schon - sollte man den deiner meinung png 8 und 24 getrennt verarbeiten oder ist das funktionell gleich wenn es dafür DIE passende funktion gäbe um die transparenz in beiden fällen zu behalten?

      EDIT:
      Ne halt -> hab rausgefunden warum das nicht ging:
      ein png das als eps von freehand in photoshop gerastert wurde und dann als png wieder abgespeichert wurde war wohl interlaced und so irgendwie schwarz und weiss als alpha. was ich immonent mache ist ja den aplhawert anhand eines pixels zu bestimmen - gibts da nicht ne besser lösung?

      Zuletzt geändert von frank7l7; 26.06.2005, 11:28.

      Kommentar


      • #4
        um beim 8bit png die transparenz-farbe zu bestimmen, kenne und benutze ich auch nur die imagecolorat/imagecolortransparent-methode ...

        um die transparenz zu erhalten, muß das alphablending für das original (vor dem kopieren) gesetzt werden. du kannst dann sowohl das 8bit als auch das 24er einfach hinein kopieren ...

        - bilder erstellen
        - 8bit-transparenzfarbe setzen
        - alphablending für das bild setzen, wo nachher alles reinkopiert wird
        - kopieren

        für das 24er mußt du so gesehen garnichts machen, du mußt eben nur festlegen, daß beim kopieren die aplha-werte erhalten bleiben.

        so sollte es funktionieren. wenns immernoch probleme gibt, schau ich mal nach entsprechenden schnipseln ...
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          ne funktioniert eigentlich prima -> komisch das dazu so viel verwirrung überall herscht?

          ich muss dazu sagen -> es gibt für die gd lib mittlerweile zuviele funktionen ... ne ne ne

          Kommentar

          Lädt...
          X