2014-10-10 12 views
7

Ich versuche ein einfaches Dynamic-Badge (PNG) zu erstellen, das in statische Seiten eingebettet wird, um den Status meiner Anwendung zu erfahren.Schreibe Text in existierende PNG mit Node.js

Ich möchte so ein vorhandenes PNG-Bild verwenden und schreiben Sie etwas Text mit Node.js.
Ich habe viele Bibliotheken gefunden, aber alle benutzen Imagemagick oder Cairo als native Abhängigkeiten, ich möchte vermeiden, irgendetwas anderes auf dem Server zu installieren.

Ich habe dann lwip gefunden, aber ich kann nicht wirklich verstehen, wie man Text auf ein Bild mit ihm schreibt. Wie kann ich?

+2

Als Alternative, würdest du erwägen, das PNG in ein SVG einzuwickeln und deinen Text so hinzuzufügen? Meine Antwort [hier] (http://stackoverflow.com/questions/24413133/batik-put-svg-on-top-of-image/24413676#24413676) zeigt die Grundlagen dieses Ansatzes. –

+0

svg wird von alten Browsern nicht unterstützt, daher glaube ich nicht, dass eine Cross-Browser-Lösung ausreichen würde ... –

+0

Ich sehe Ihren Standpunkt. Die Frage ist dann, wie weit möchten Sie in Ihrem Browser-Support gehen? PNG wird auch in alten Browsern nicht unterstützt ... Sie könnten das SVG auch unter Verwendung von z. https://www.npmjs.org/package/svg2png –

Antwort

9

Sie könnten Jimp verwenden. Es hat eine Druckmethode:

var Jimp = require("jimp"); 

var fileName = 'test.png'; 
var imageCaption = 'Image caption'; 
var loadedImage; 

Jimp.read(fileName) 
    .then(function (image) { 
     loadedImage = image; 
     return Jimp.loadFont(Jimp.FONT_SANS_16_BLACK); 
    }) 
    .then(function (font) { 
     loadedImage.print(font, 10, 10, imageCaption) 
        .write(fileName); 
    }) 
    .catch(function (err) { 
     console.error(err); 
    }); 
+0

Oder es sieht so aus, als ob jeder SVG in diesen Tagen unterstützt: http://caniuse.com/#feat=svg –

+0

Mit Jimp können Sie keinen Text mit beliebiger Größe und Farbe schreiben. – dumitru

+0

@dumitru Sie können. –