Unicode-Texte auf Grafiken mit der PIL (Python Imaging Library)

Da ich letzte Woche darüber gestolpert bin, wollte ich es zumindest kurz niederschreiben: Ich musste einen Text mit Umlauten aus Usereingaben in einer speziellen Schriftart auf ein Bild positionieren. Da das Projekt auf Googles App Engine laufen sollte, war es natürlich in Python 2.7 geschrieben. Hier als mein erster Test:

from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

img = Image.open('background.png')
font = ImageFont.truetype('indieflower.ttf', 18)
image_text = u"àäöüß"
drawer = ImageDraw.Draw(img)
drawer.text((0, 0), image_text, fill=(0, 0, 0), font=font)
img.save('myimage.png')

Dies produziert direkt einen Fehler:

weiterlesen »

Facebook-Vorschaubild-Abmahnung aus technischer Sicht

Ach herrje, es gibt wieder eine Sau, die durch’s Dorf getrieben wird: „Nun ist es soweit: Abmahnung wegen Vorschaubildern bei Facebooks Teilen-Funktion“

Nun laufen alle Leute los und behaupten: „Ihr müsst ab sofort alle Links ohne Vorschaubild posten!“ Aus meiner Sicht ist das der total falsche Ansatz, aber darüber dürfen sich die Anwälte Gedanken machen.

Ich hab dazu auch bei Nina Diercks kurz mal Rede und Antwort gestanden, was man da technisch machen kann und will das hier nochmal kurz näher erläutern, wie das eigentlich geht, wenn ich einen Artikel verlinke.

weiterlesen »

Ubuntu für Mobiltelefone - Yet another mobile OS oder Revolution?

Heute hat Mark Shuttleworth, Gründer von Canonical, sein Betriebssystem Ubuntu für Smartphones angekündigt. Die Keynote dazu:

Was mich persönlich sehr an dem Betriebssystem reizt: Dass es sich um ein Linux handelt. Man kann ganz normale Apps für das Betriebssystem schreiben, wie man es auch schon bei normalen Programmen gewohnt ist. Was ich nämlich sowohl an iOS, als auch Android nicht mag, ist die Tatsache, dass man grundlegend jeweils an eine Programmiersprache (iOS = ObjectiveC, Android = Java) gefesselt ist. Beide Sprache lösen bei mir spontane, beidseitige Lähmung aus, sobald ich anfangen möchte, sie zu benutzen.
Natürlich gibt es dafür inzwischen Workarounds und SDKs, um auch endlich andere Sprachen benutzen zu können, aber am Ende sind es doch nur Krücken.

weiterlesen »

Sicheres Surfen für alle Facebook-User

Eben machte es „pling“ im Postfach und da kam der typische wöchentliche Facebook-Newsletter. Oft achte ich auf die kleinen Sachen darin und natürlich verbergen sich darin meist die wichtigen Sachen. Selbstverständlich auch diese Woche:

Rolling out HTTPS for all Users

As announced last year, we are moving to HTTPS for all users. This week, we’re starting to roll out HTTPS for all North America users and will be soon rolling out to the rest of the world.

weiterlesen »

Facebook schränkt zukünftig Apps ein

In einer Ankündigung beschreibt Facebook, was sich zukünftig (ab dem 6. Februar 2013) für Apps und Entwickler ändert und mit dabei sind zwei Änderungen, die mich beruflich betreffen:

Auf die Wall eines Freundes schreiben

Das wohl nervigste Feature in der Facebook-API und leider viel zu oft genutzt, wird die Möglichkeit, einer anderen Person automatisiert auf die Wall zu posten, entfernt. Stattdessen wird empfohlen, den Feed-Dialog zu öffnen, bei dem man eine Facebook-User-ID angeben kann, um einem Freund auf die Wall zu posten.
Dies geht dann natürlich immer schön Einer nach dem Anderen. Nichts mehr mit Massenpostings, um die Reichweite zu erhöhen.

weiterlesen »

Chromebox im Business-Einsatz - Woche 1

Ich kaufte letztes Wochenende eine Chromebox. Noch während des Kaufs bekam ich Warnmeldungen von Leuten, die meinten: „Tu’s nicht, sie taugt nichts!“
Nun, zum Glück habe ich ja zu allem meine eigene Meinung.

So schloss ich dann also am Montag die Box im Büro an, Monitor dran, Tastatur und Trackball dran und Stromkabel dran. Dann kam der spannende Moment: Der Start. Nach 3 Sekunden war das Gerät hochgefahren. Das ist doppelt so schnell wie beim aktuellsten und schnellsten Chromebook. Nunja, schnell noch Updates gemacht und nach einem erneuten Neustart für das Update konnte ich mich einloggen und war innerhalb von 10 Sekunden voll arbeitsfähig. Also genauso arbeitsfähig wie vorher auf meinem Linux-Gerät.

weiterlesen »

Chrome OS: „Wie kannst du nur?!“ - Teil 1

Ich werde oft gefragt: „Wie kannst du nur mit Chrome OS“ gefolgt von irgendeinem Verb. Ich will darüber mal ein bisschen was schreiben, damit ich die Frage nicht drölf Mal pro Woche beantworten muss.

Fange ich also mit dem Verb an, was bei mir am Meisten zutrifft: „programmieren“.

Ich verdiene mein Geld damit, viele Einsen und Nullen durchs Netz zu prügeln. Im Normalfall würde ein „normaler“ Web-Entwickler wohl Folgendes verwenden:

weiterlesen »

Google+ History - die weniger nervigen Graph-Actions

Die Timeline bei Facebook ist ja immer wieder ein Punkt, bei dem viele User schreien. Zusammen mit den OpenGraph-Actions, wie sie z.B. durch Spotify getriggert werden, bildet sie mehrere Wochen Diskussionsstoff.

Bei Google+ geht man einen anderen Weg: Google History. In dieser History werden „Moments“ aufgelistet. Diese Moments haben derzeit einen eingeschränkten Verbschatz, sodass man noch ziemlich beschränkt ist, was ein Fremdservice so reinposten dürfe.

Nach einem ersten kurzen Test mit der API kann ich nur sagen, dass es sich ziemlich fluffig anfühlt und die History-API wahrscheinlich die eigene Timeline nicht so zumüllt. Derzeit ist es nämlich so, dass die Moments alle in einem kleinen Tab gefangen sind. Wenn es allerdings wie bei den Games läuft, werden diese wahrscheinlich früher oder später im Stream auftauchen. Schön ist hier allerdings, dass ich als User bestimmen kann, wieviel ich davon in meinem Stream sehen will.

weiterlesen »