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 Mrz 18 at 08:48