[PHP] Verlauf von Bild -> Transparent
Übersicht

dubitatBetreff: [PHP] Verlauf von Bild -> Transparent |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() mfg dubitat |
||
Erare humanum est - Irren ist Menschlich |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group