rob
Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht:
|
Verfasst Mi 09.04.2008 00:19
Titel Wasserzeichen/Schriftzug auf Bild mit PHP |
|
|
Ich würde die Sache ganz anders angehen, denke ich.
Natürlich kann man den Krams mit Photoshop oder anderem automatisieren. Ich würde die Bilder allerdings völlig unangetastet lassen und die Schrift mit Hilfe einer serverseitigen Sprache auf die Bilder legen.
Schaut sich jemand dann dein Fotogalerie an, legt der Server den Schriftzug automatisch auf jedes Bild, bevor er diese zum Browser des Users schickt.
Wenn auf dem Server PHP installiert ist, kann man mit der GD-Library arbeiten.
Du brauchst nicht viel dafür. Du erstellst ein neues Bild mit Photoshop (oder womit du halt arbeitest). Darauf kommt dann dein gewünschter Schriftzug. Den Hintergrund machst du transparent. Das Bild mußt du dann in einem Format speichern, daß 1. Transparenz unterstützt und 2. von PHP/GD-Lib gelesen werden kann. Daher würde ich vorschlagen, ein PNG zu wählen.
Dann brauchst du nur noch ein Script, welches eines deiner Bilder öffnet, das transparente Bild mit dem Schriftzug darüber platziert und daraus ein neues Bild generiert und zum Client schickt.
Das ist ganz einfach.
Teil 1: normale HTML-Datei, wo die Bilder eingebunden werden. Allerdings schreibst du in das Image-Tag jetzt nicht den Bildnamen direkt, sondern rufst das PHP-Script auf und übergibst den Dateinamen.
(Ich hätte jetzt auch nur das Imagetag posten können, aber ich poste mal den Code einer kompletten HTML-Seite. So kannst du das rauskopieren und direkt testen.)
Code: | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/transitional.dtd">
<html>
<head>
<meta http-equiv="language" content="de">
<meta http-equiv="content-type" content="text/html; charset=iso-8859-15">
<title>Test</title>
</head>
<body>
<img src="bild.php?bild=narrtrium" alt="Testbild">
</body>
</html> |
Teil 2: Das PHP-Script (speichern als bild.php - oder halt den Namen auch im HTML-Code ändern)
Code: | <?php
header( "Content-Type: image/png" );
$file = $_GET['bild'] . ".jpg";
if ( file_exists( $file ) )
{
$size = getimagesize( $file );
$width = $size[0];
$height = $size[1];
$old_picture = imagecreatefromjpeg( $file );
$new_picture = imagecreatetruecolor( $width, $height );
imagecopyresampled( $new_picture, $old_picture, 0, 0, 0, 0, $width, $height, $width, $height );
$transition = 50;
$watermarkfile = imagecreatefrompng( "schriftzug.png" );
$waternarkpic_width = imagesx( $watermarkfile );
$waternarkpic_height = imagesy( $watermarkfile );
$watermarkdest_x = $width / 2 - ( $waternarkpic_width / 2 );
$watermarkdest_y = $height / 2 - ( $waternarkpic_height / 2 );
imagecopymerge( $new_picture, $watermarkfile, $watermarkdest_x, $watermarkdest_y, 0, 0, $waternarkpic_width, $waternarkpic_height, $transition );
imagejpeg( $new_picture );
}
?> |
Teil 3: Die Datei mit dem Schriftzug. Wie gesagt: nur Schriftzug, transparenter Hintergrund, als schriftzug.png speichern.
Ich habe mir ein ähnliches Script geschrieben, was ich oft nutze. Damit lege ich dann automatisch ein Logo als Wasserzeichen auf Fotos. So muß ich mir nicht die Mühe machen, dieses Wasserzeichen mit Photoshop auf jedes Bild zu setzen.
Zuletzt bearbeitet von rob am Mi 09.04.2008 00:23, insgesamt 1-mal bearbeitet
|
|