Text in Bild einfügen: ImageLabeler
Heute gibts ein kleines Script, das zu einem gegebenen Bild einen Text hinzufügt, also beispielsweise einen Copyright-Hinweis rechts unten einfügt. Im Bild rechts sieht man wie ich den Text ‚PHPGangsta‘ in der Position rechts unten eingefügt habe, mit roter Schriftfarbe und weißer Umrandung.
Es ist die erste Version mit Basisfunktionalität. Aktuell können beeinflusst werden:
- Text
- Schriftfarbe
- Hintergrundfarbe
- Schriftgröße
- Dateiausgabeformat (jpg, png, gif) und Qualität
- Positionen: alle 4 Ecken, zentriert oder individuelle X/Y Koordinaten
- Rahmen um den Text und Hintergrundfarbe
Auf Github findet ihr das Projekt ImageLabeler, die Klasse könnt ihr einfach benutzen:
<?php require_once 'ImageLabeler.php'; $imageLabeler = new ImageLabeler(); $imageLabeler->setFilePath('/path/to/image.jpg') ->setText('PHPGangsta') ->render(); echo $imageLabeler->getRenderedFilePath(); // outputs something like /tmp/63D6.tmp.png
Es gibt aber noch einige weitere Einstellungsmöglichkeiten:
<?php require_once 'ImageLabeler.php'; $imageLabeler = new ImageLabeler(); $imageLabeler->setFilePath('/path/to/image.jpg') ->setText('PHPGangsta') ->setPosition(ImageLabeler::POSITION_BOTTOM_CENTER) ->setFontSize(3) ->setFormat('png') ->setFontColor('0000ff') ->setBackgroundColor('ffffff') ->setTargetFileQuality(80) ->setBoxBorderThickness(2) ->setBoxBorderColor('ff0000') ->render() ->outputRenderedImage();
Man könnte sich natürlich noch weitere Dinge vorstellen wie TTF-Schriftarten, Transparenz, Rotation usw.
Eine Frage zum Schluss noch: Sollte ich solche Klassen in meinen eigenen Namespace packen? Nachteil wäre dass die Klassen dann bei PHP < 5.3 angepasst werden müssen…
Hallo Michael,
Schöner wäre doch dein Logo als Watermark darüber zu legen, oder nicht?
PHP5.2 ist laut php.net nicht länger supported. Wir halten unsere Tools zwar aktuell noch 5.2 kompatibel, ändern das aber mit dem nächsten Hauptrelease.
Für den ganzen Pixelspaß nutze ich übrigens am liebsten ImageMagick (via Imagick PECL).
Rodney Rehm
22 Aug. 11 at 09:59
will ich so ein PHP Elefanten 🙁
Wasrun
22 Aug. 11 at 10:22
@Rodney Rehm: So eine Klasse sollte auch schnell geschrieben sein nehme ich an, man hat deutlich weniger Variablen. Vielleicht habe ich ja mal eine Stunde Zeit, oder jemand anders…
@Wasrun: Gedulde dich noch ein paar Tage…
Michael Kliewe
22 Aug. 11 at 10:30
Hallo Michael,
habe das „Watermarking“ mal aus meine ImageProcessing Utility rausgezogen: https://gist.github.com/1161975
wie kommt man denn an so einen (ele)ph(p)ant ran? 😉
Rodney Rehm
22 Aug. 11 at 11:03
Ich nehm lieber Imagick, weil es sich irgendwie schneller anfühlt als GD. Ob es stimmt, hab ich aber nie getestet. 🙂
Oliver
22 Aug. 11 at 15:58
ich will auch so einen Elefanten……
Martin
23 Aug. 11 at 08:57
@Michael
weil du sagst ich soll mich ein paar Tage gedulden, heißt das du kannst welche auftreiben?
Wasrun
23 Aug. 11 at 10:34
@Wasrun & Martin & Rodney: Ja, ich bekomme bald wieder welche und kann euch dann welche schicken. Ein paar Tage dauerts allerdings.
Michael Kliewe
23 Aug. 11 at 10:59
ich hätte auch interesse an einem
Uwe
23 Aug. 11 at 11:38
Ich wäre extrem glücklich über so einen Elefanten 🙂
Wünsche mir den schon lange für meine Sammlung.
Martin Keckeis
23 Aug. 11 at 12:25
So ein ElePHPant hat schon was. Suche auch schon lange nach einer möglichkeit so einen zu bekommen…
DrDreistein
23 Aug. 11 at 16:16
ich finde diesen Elephanten auch total süß, wenn es eine Möglichkeit gibt, einen solchen zu bekommen, wäre ich auch dabei 😀
außerdem vielen Dank für den Artikel!
Thomas
26 Aug. 11 at 14:41
Habe ElePHPanten bekommen, siehe hier:
https://www.phpgangsta.de/toroo-die-elephpanten-sind-wieder-da
Michael Kliewe
9 Sep. 11 at 20:52
hey Michael 😀 sage mal wie binde ich das script richtig ein ich bekomme immer nur eine .png datei aber keine neue ich steige leider nicht dran lang 🙁
Michael
13 März 18 at 08:48