| 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! |
 |

01-11-2007, 12:24
|
|
EdMolf
Registrierter Benutzer
|
|
Registriert seit: May 2007
Beiträge: 28
|
|
PHP PNG-Alpha Wasserzeichen mit Schatten
Hallo,
ich habe folgendes Problem.
Ich habe ein Bilder uploadscript geschrieben wo automatisch ein Wasserzeichen in die untere rechte Ecke des hochgeladenen Bildes eingebunden wird. Das Wasserzeichen ist ein .png Bild das ich auch eingebunden bekommen, allerdings wird die .png komplett ohne Transparenz gespeichert =/.
Banner vor dem hochladen: http://edmolf.xemedia.de/banner.jpg
Wasserzeichen: http://edmolf.xemedia.de/sgm_copyright.png
Banner nach dem hochladen: http://edmolf.xemedia.de/banner2.jpg
Hier noch der Code für die Wasserzeichen generierung den ich benutze:
PHP-Code:
$img_size = getimagesize('../images/gallery/'.$image);
$width = $img_size[0];
$height = $img_size[1];
header('Content-type: image/jpeg');
$old_picture = imagecreatefromjpeg('../images/gallery/'.$image);
$new_picture = imagecreatetruecolor($width, $height);
imagecopyresampled($new_picture, $old_picture, 0, 0, 0, 0, $width, $height, $width, $height);
$transition = 100;
$watermarkfile = imagecreatefrompng('../images/sgm_copyright.png');
$waternarkpic_width = imagesx($watermarkfile);
$waternarkpic_height = imagesy($watermarkfile);
$watermarkdest_x = $img_size[0] - $waternarkpic_width - 10;
$watermarkdest_y = $img_size[1] - $waternarkpic_height - 10;
imagecopymerge($new_picture, $watermarkfile, $watermarkdest_x, $watermarkdest_y, 0, 0, $waternarkpic_width, $waternarkpic_height, $transition);
imagejpeg($new_picture,'../images/gallery/'.$image, 200);
imagedestroy ($new_picture);
Gibt es eine Möglichkeit die Transparenz der .png weiterhin beizubehalten falls das nicht geht immerhin eine Farbe zu definieren die Transparent dargestellt werden soll ?
Edit:
Die Befehle imageAlphaBlending und imageSaveAlpha habe ich mir auch schon angeschaut, aber ich bin damit bisher immer zum dem gleichen Resultat gekommen welches in banner2.jpg zu sehen ist.
Gruß
EdMolf
Geändert von EdMolf (01-11-2007 um 12:49 Uhr)
|

01-11-2007, 13:03
|
|
pekka
PHP Master
|
|
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
|
|
|

01-11-2007, 13:46
|
|
EdMolf
Registrierter Benutzer
|
|
Registriert seit: May 2007
Beiträge: 28
|
|
Hey,
an sich ist der Befehl ja schön und gut aber er hilft mir trotzdem noch nicht bei meinem Problem weiter. Ich habe sgm_copyright.png in Photoshop erstellt und den Hintergrund dabei transparent gelassen. Dann habe ich das ganze als .png abgespeichert sprich ich weis nicht welche Farbe als Hintergrundfarbe definiert ist. Wenn ich den Befehel den du gepostet hast richtig verstehe dann macht er ausserdem nur eine bestimmte festgelegte Farbe durchsichtig, aber dann kann ich ja meine Schatten in der Schrift vergessen weil da ja ein Übergang zwischen der Hintergrundfarbe und der Schrift an sich ist.
Ich habe trotzdem einfach mal versucht mit dem Befehl den Hintergrund transparent zu machen, aber entweder habe ich den Befehl falsch verstanden und angewendet oder der Befehl ist wie ich oben schon erläutert habe nicht für mein Problem zu gebrauchen.
PHP-Code:
$alpha = imagecolorallocate($watermarkfile, 255,255,255);
imagecolortransparent ($watermarkfile, $alpha);
Gruß
EdMolf
Geändert von EdMolf (01-11-2007 um 13:49 Uhr)
|

01-11-2007, 13:51
|
|
pekka
PHP Master
|
|
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
|
|
Merke: Bei den GD-Funktionen gilt: Fast jedes Problem ist schon mal aufgetaucht, und ist in den User Contributed Notes zu den einzelnen Funktionen zu finden.
Hier ist z.B. ein Skript, das (angeblich) das tut, was Du brauchst. Vergleichen oder übernehmen. Nicht getestet, keine Gewähr:
http://de2.php.net/manual/de/functio...erge.php#53100
EDIT:
Der Schlüssel ist offenbar imagecopy() statt imagecopymerge().
|

01-11-2007, 14:03
|
|
EdMolf
Registrierter Benutzer
|
|
Registriert seit: May 2007
Beiträge: 28
|
|
Hi,
danke für die schnelle Antwort. Mit imagecopy() funktionert es einwandfrei. Hier nochmal der komplette und jetzt auch funktionierende Code:
PHP-Code:
$img_size = getimagesize('../images/gallery/'.$image);
$width = $img_size[0];
$height = $img_size[1];
header('Content-type: image/jpeg');
$old_picture = imagecreatefromjpeg('../images/gallery/'.$image);
$new_picture = imagecreatetruecolor($width, $height);
imagecopyresampled($new_picture, $old_picture, 0, 0, 0, 0, $width, $height, $width, $height);
$watermarkfile = imagecreatefrompng('../images/sgm_copyright.png');
$alpha = imagecolorallocate($watermarkfile, 255,255,255);
imagecolortransparent ($watermarkfile, $alpha);
$waternarkpic_width = imagesx($watermarkfile);
$waternarkpic_height = imagesy($watermarkfile);
$watermarkdest_x = $img_size[0] - $waternarkpic_width - 10;
$watermarkdest_y = $img_size[1] - $waternarkpic_height - 10;
imagecopy($new_picture, $watermarkfile, $watermarkdest_x, $watermarkdest_y, 0, 0, $waternarkpic_width, $waternarkpic_height);
imagejpeg($new_picture,'../images/gallery/'.$image, 200);
imagedestroy ($new_picture);
Gruß
EdMolf
|
|
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
|