Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] Transparente Bilder zusammenführen (https://www.delphipraxis.net/149208-%5Bphp%5D-transparente-bilder-zusammenfuehren.html)

Matze 16. Mär 2010 19:24


[PHP] Transparente Bilder zusammenführen
 
Hallo,

gleich vorweg: PHP ist seltsam. *g*

Ich skaliere ein alphatransparentes PNG herunter, grob so:

Code:
$im = imagecreatefrompng(...);
imagesavealpha($im, true);

$im_thumb = imagecreatetruecolor(...);
imagealphablending($im_thumb, false); // fragt nicht wieso, aber "false" ist hier korrekt
imagesavealpha($im_thumb, true);

$transp = imagecolorallocatealpha($im_thumb, ...);
imagefilledrectangle($im_thumb, ..., $transp);

imagecopyresampled($im_thumb, $im, ...);
Das funktioniert soweit.

Nun zeichne ich ein halbtransparentes Rechteck darüber:

Code:
$rect_color = imagecolorallocatealpha($im_thumb, ...);
imagefilledrectangle($im_thumb, ..., $rect_color);
Das geht auch.

Nun möchte ich aber über dem Rechteck noch ein alphatransparentes Icon haben und da kann ich versuchen, was ich will, es klappt nicht.
Das soeben gezeichnete Rechteck wird im Bereich des Icons mit vollständiger transparenz "übermalt". D.h. dort, wo das Icon transparent ist, kann ich durch das Bild auf den Hintergrund schauen.

Ansätze waren u.a.

- der wie oben: imagecreatefrompng() => imagecopy()
- imagecreatetruecolor() => imagecreatefrompng() => imagecopy() auf das mit "...truecolor()" erstellte PNG => imagecopy() auf $im_thumb

Nichts geht.

Wie geht das bzw. kann PHP bzw. GD das überhaupt?

Grüße, Matze

Benedikt 17. Mär 2010 22:37

Re: [PHP] Transparente Bilder zusammenführen
 
Hi,
versuch mal einen Aufruf von
Code:
imagelayereffect($im_thumb, IMG_EFFECT_ALPHABLEND);
nach dem ersten Abschnitt Code, den du gepostet hast, zu machen.
Bei mir gehts dann, vorausgesetzt ich versteh richtig was du willst :-D

MfG Benedikt

Matze 17. Mär 2010 22:47

Re: [PHP] Transparente Bilder zusammenführen
 
Hallo Benedikt,

perfekt. Das ist genau das, was ich wollte. Vielen Dank. :thumb:
Diese Funktion kannte ich bisher gar nicht.

Grüße, Matze

Edit: Auf php.net steht folgendes:

Zitat:

IMG_EFFECT_ALPHABLEND
Use normal pixel blending (equivalent of passing FALSE to imagealphablending())
"imagealphablending($im_thumb, false);" verwendete ich jedoch und das funktionierte nicht. :gruebel:

Benedikt 17. Mär 2010 22:58

Re: [PHP] Transparente Bilder zusammenführen
 
Zitat:

Zitat von Matze
Edit: Auf php.net steht folgendes:

Zitat:

IMG_EFFECT_ALPHABLEND
Use normal pixel blending (equivalent of passing FALSE to imagealphablending())
"imagealphablending($im_thumb, false);" verwendete ich jedoch und das funktionierte nicht. :gruebel:

Das hat mich vorhin auch etwas verwirrt...so ganz äquivalent scheint mir das irgendwie nicht zu sein :gruebel: :-D
Aber Hauptsache es klappt :wink:

Matze 18. Mär 2010 07:46

Re: [PHP] Transparente Bilder zusammenführen
 
Zitat:

Zitat von Benedikt
Das hat mich vorhin auch etwas verwirrt...so ganz äquivalent scheint mir das irgendwie nicht zu sein :gruebel: :-D
Aber Hauptsache es klappt :wink:

Jupp. Manchmal ist PHP schon etwas eigenwillig. Aber selber Schuld, wenn man PHP nutzt. *g*

Danke nochmals.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz