[PHP] Verlauf von Bild -> Transparent

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

 

dubitat

Betreff: [PHP] Verlauf von Bild -> Transparent

BeitragMi, Mai 06, 2009 1:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich stehe vor einem für mich mitlerweile scheinbar unlösbarem Problem:
ich will einen Verlauf erzeugen, der von Bild->Transparent geht. Da die Hintergrundfarbe, auf welcher die Bilder angezeigt werden nicht die gleiche ist und auch aus Verläufen besteht, brauche ich ein PHP-Script, was für mich die Arbeit abnimmt. In Photoshop ist ein solcher Verlauf mit 3 Klicks erzeugt und abgespeichert, in PHP habe ich leider noch keine Lösung gefunden, die auch zu dem Ergebnis führt....

Mein Code sieht bisher wie folgt aus:

Code: [AUSKLAPPEN]

$thumbmirror=imagecreatetruecolor($newthumbwidth, $newthumbheight);
$verlauf=imagecreatetruecolor($newthumbwidth, $newthumbheight);

//das folgende gedöhns ist nur dazu da, dass mein PHP auch mal ein transparentes Bild erzeugt                  
imagealphablending($thumbmirror, true);
$transparent = imagecolorallocatealpha($verlauf, 0, 0, 0, 127);
imagefill($verlauf, 0, 0, $transparent);
imagesavealpha($verlauf,true);
imagealphablending($verlauf, true);
         
         
         //mit imagecopymerge zeilenweise kopieren und transparenz erhöhen!
         
for($i=0;$i<$newthumbheight;$i++){
   $f=(-100/$newthumbheight)*$i+100;
   imagecopymerge($verlauf,$thumbmirror,0,$i,0,$i,$newthumbwidth,1,$f);
}
         
         
//$mirror_url enthält natürlich einen gültigen Pfadnamen
imagepng($verlauf,$mirror_url);


Das größte Problem scheint hierbei das imagecopymerge(); zu sein, da das Bild vor dem Kopieren keine Bildfarbe besitzt, danach dann aber die Stellen, die immer transparenter durchscheinen sollten, aber leider einen Verlauf nach schwarz ergeben.... Muss ich eventuell Pixel für Pixel die Transparenz setzen?

mfg
dubitat[/code]
Erare humanum est - Irren ist Menschlich
 

dubitat

BeitragMi, Mai 06, 2009 1:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
nach der 10.000sten Abhandlung habe ich nun endlich einen Weg gefunden, der mich zufriedenstellt. Man muss einfach Pixel für Pixel die neue Transparenz festsetzen:

Code: [AUSKLAPPEN]

for($i=0;$i<$newthumbheight;$i++){
   $f=(127/$newthumbheight)*$i;
            
   for($x=0;$x<$newthumbwidth;$x++){
      $rgb=imagecolorsforindex($thumbmirror,imagecolorat($thumbmirror,$x,$i));
      $newcol=imagecolorallocatealpha($verlauf,$rgb['red'],$rgb['green'],$rgb['blue'],$f);
      imagesetpixel($verlauf,$x,$i,$newcol);
   }
   //imagecopymerge($verlauf,$thumbmirror,0,$i,0,$i,$newthumbwidth,1,$f);
}


somit steht fest, dass imagecopymerge() ein Problem mit der Transparenz hat, und das über die einzelnen Pixel viel einfacher geht Wink

mfg
dubitat
Erare humanum est - Irren ist Menschlich

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group