| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

29-10-2009, 09:01
|
|
Pums
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 12
|
|
[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($roh, 255, 0, 0); $effect = imagecreatefrompng("effekte.png");
imagesavealpha($effect, true); imagesavealpha($roh, true);
imagefill ($roh, 20, 20, $color);
imagecopymerge($roh,$effect, 0, 0, 0, 0, 150, 150,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.
|

29-10-2009, 10:21
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
hast du es schon mal imagealphablending probiert?
Gruß,
Amica
|

29-10-2009, 10:39
|
|
Pums
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 12
|
|
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
|

29-10-2009, 11:19
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
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.
|

29-10-2009, 13:16
|
|
Pums
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 12
|
|
Problem behoben:
PHP-Code:
<?php header ("Content-type: image/png"); //Rohbutton $roh = imagecreatefrompng("roh.png"); //Farbe des Button $color=imagecolorallocate($roh, 0, 100, 255); //Effekt des Button $effect = imagecreatefrompng("effekte.png"); //Hilfesbild um Truecolorbild mit Alphakanal zu bekommen $helppic=imagecreatetruecolor(150,25);
imagealphablending($effect, false); imagesavealpha($effect, true);
imagealphablending($roh, true); imagesavealpha($roh, true);
imagealphablending($helppic, false); imagesavealpha($helppic, true);
//Rohbutton mit Farbe fülle imagefill($roh,20,20,$color);
//Effekt ins Truecolorbild kopieren imagecopyresampled($helppic,$effect,0,0,0,0, 150,150,150,150);
//Truecoloreffekt Bild über den gefärbten Rohbutton legen imagecopyresampled($roh,$helppic, 0, 0, 0, 0, 150, 150,150,150);
//Bild erstellen imagepng($roh); ?>
Geändert von Pums (29-10-2009 um 14:18 Uhr)
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|