Portal > Foren > PHP > PHP-Programmierung > gdLib 2 - Transparenter Hintergrund beim Rotieren eines Bildes
Antwort
 
Themen-Optionen
Alt 24.02.2007, 21:57 Nach oben    #1
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard gdLib 2 - Transparenter Hintergrund beim Rotieren eines Bildes

Abend,
ich hab hier ein Problem mit einer Methode einer etwas älteren Image-Klasse.
Das Ziel hier ist es, das Bild zu rotieren - mittels ImageRotate(). Falls angegeben, soll der überschüssige Hintergrund, der beim Rotieren des Bildes z.B. um 45° entsteht, transparent dargestellt werden.

Doch ich krieg das irgendwie nicht hin
Bei mir wird der Hintergrund, sofern er transparent sein soll, schwarz. Ohne transparenz wird der Hintergrund problemlos in jeder gewünschten Farbe dargestellt. Im Beispiel wird ein Bild des Formates GIF verwendet.
PHP-Code:
<?php
        
/**
         * Rotates the loaded image in $fDegrees degrees
         *
         * @param float   $fDegrees
         * @param array   $aBackgroundColorRGB
         * @param boolean $bBackgroundTransparency
         * @return boolean
         */
        
function rotate($fDegrees$aBackgroundColorRGB = array(), $bBackgroundTransparency false) {
                
// [...] (ein paar themen-unrelevante Codezeilen)

                // The background should be transparent
                
if($bBackgroundTransparency !== false and $this -> sImageType != 'jpeg') {
                        
#$rBackgroundColor = ImageColorAllocate($this -> rImage, $aBackgroundColorRGB[0], $aBackgroundColorRGB[1], $aBackgroundColorRGB[2]);
                        
$rBackgroundColor ImageColorTransparent($this -> rImage,
                                                                  
ImageColorAllocate(
                                                                      
$this -> rImage,
                                                                      
$aBackgroundColorRGB[0],
                                                                      
$aBackgroundColorRGB[1],
                                                                      
$aBackgroundColorRGB[2])
                                                                  );
                }

                
// No transparency (or the picture is an jpeg)
                
else {
                        
$rBackgroundColor ImageColorAllocate($this -> rImage$aBackgroundColorRGB[0], $aBackgroundColorRGB[1], $aBackgroundColorRGB[2]);
                }

                
$this -> rImage ImageRotate(&$this -> rImage$fDegrees$rBackgroundColor);
        }
?>
Was mach ich falsch? auf php.net kreuzen sich die Aussagen, und nicht wirklcih hat etwas funktioniert ..
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 26.02.2007, 17:06 Nach oben    #2
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 591
Standard

Das sieht schlecht aus, weil ImageRotate() wohl nicht mit transparenzen klar kommt.
CIX88 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 26.02.2007, 20:03 Nach oben    #4
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Ahja das is ja interessant, danke euch beiden. Scheint tatsächlich so zu sein.
Dann werde ich das Bild eben manuell in PHP drehen, sprich die Pixel alle neu berechnen, hatte so etwas shconmal gemacht, das fukntioniert dann auch mit Transparenz - ich hatte nur gehofft, dass das mit ImageRotate() viel einfacher geht.
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.02.2007, 12:20 Nach oben    #5
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 591
Standard

Hast du mal mit imagealphablending() und imagesavealpha() versucht ?
CIX88 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
gdLib - Bilder rotieren Chr!s PHP-Programmierung 19 05.02.2006 20:03
[Grundlagen] GDlib und große Bilder CIX88 Tutorials 0 28.01.2006 12:46


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:26 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44