PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   [gelöst] GD-Bildtransparenz nach imagecopymerge (https://www.php-resource.de/forum/php-developer-forum/97931-geloest-gd-bildtransparenz-nach-imagecopymerge.html)

Pums 29-10-2009 09:01

[gelöst] GD-Bildtransparenz nach imagecopymerge
 
Vorabinfos:
-PHP Version 5.3.0
-GD-Version: bundled (2.0.34 compatible)


Also ich habe folgendes Problem.
Ich möchte mir mit Hilfe der GD-Lib unter PHP einen Button erstellen lassen.
Der Button soll z.B. so aussehen:
http://cls.bplaced.net/bild.png

Nun habe ich mit PS zwei Bilder erstellt:
1.der Buttonrohling:

http://cls.bplaced.net/roh.png
(Achtung es ist ein weisser Buttton mit transparentem Hintergrund, man sieht ihn also nur wenn man ihn makiert und versucht zu verschieben)

2.der Effekt:

http://cls.bplaced.net/effekte.png

Soweit so gut.
Nun möchte ich des Button rot einfärben, das funzt auch, danach mithilfe von imagecopymerge() den Effekt über den Button legen.
Auch das funktioniert, doch sieht es nicht schön aus, egal welchen Wert ich bei imagecopymerge() bei der transparenz angebe.

Hier mal der Code:

PHP-Code:

header ("Content-type: image/png");
$roh imagecreatefrompng("roh.png");
$color imagecolorallocate($roh25500);
$effect imagecreatefrompng("effekte.png");

imagesavealpha($effecttrue);
imagesavealpha($rohtrue);

imagefill ($roh2020$color);

imagecopymerge($roh,$effect0000150150,50);

imagepng($roh); 

Hier das Ergebniss:
http://cls.bplaced.net/change2.php

Das sieht doch net schön aus. :(

Danke schonmal für eure Hinweise.

AmicaNoctis 29-10-2009 10:21

Hallo,

hast du es schon mal imagealphablending probiert?

Gruß,

Amica

Pums 29-10-2009 10:39

Hallo,

ja in allen Variationen, also entweder nur eines der Bilder oder beide, mit true und false im wechsel.
Verändert leider das Ergebniss in keinster Weise.


Danke

Lg

AmicaNoctis 29-10-2009 11:19

Passiert dieses ungewollte Verhalten sicher erst nach imagecopymerge und nicht schon bei imagefill? Ansonsten wäre imagefilter mit IMG_FILTER_COLORIZE noch eine Ausweichvariante.

Deine Idee der Nachcoloration einer reinen Maske finde ich ja gut, aber ohne Alphablending nimmt GD ja die premultiplied Werte, was imho gar nicht funktionieren kann, bzw. genau so aussieht, wie das was bei dir rauskommt. Wenn du es aber schon mit Alphablending versucht hast und es da auch nicht ging, dann weiß ich glaub ich auch nicht weiter.

Jedenfalls solltest du nach jedem Schritt das Bild mal in einer neuen Datei speichern und mit deinem PS die Änderungen ganz genau analysieren.

Pums 29-10-2009 13:16

Problem behoben:
PHP-Code:

<?php
header 
("Content-type: image/png");
//Rohbutton
$roh imagecreatefrompng("roh.png");
//Farbe des Button
$color=imagecolorallocate($roh0100255);
//Effekt des Button
$effect imagecreatefrompng("effekte.png");
//Hilfesbild um Truecolorbild mit Alphakanal zu bekommen
$helppic=imagecreatetruecolor(150,25);

imagealphablending($effectfalse);
imagesavealpha($effecttrue);

imagealphablending($rohtrue);
imagesavealpha($rohtrue);

imagealphablending($helppicfalse);
imagesavealpha($helppictrue);

//Rohbutton mit Farbe fülle
imagefill($roh,20,20,$color);

//Effekt ins Truecolorbild kopieren
imagecopyresampled($helppic,$effect,0,0,0,0150,150,150,150);


//Truecoloreffekt Bild über den gefärbten Rohbutton legen
imagecopyresampled($roh,$helppic0000150150,150,150);

//Bild erstellen
imagepng($roh);
?>



Alle Zeitangaben in WEZ +2. Es ist jetzt 00:56 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG