2014-10-10 10 views
7

Próbuję utworzyć prostą dynamiczną plakietkę (png) do umieszczenia na statycznych stronach, aby poinformować o statusie mojej aplikacji.Napisz tekst na istniejącym PNG za pomocą Node.js

Chciałbym użyć istniejącego obrazu PNG i napisać na nim tekst z Node.js.
Znalazłem wiele bibliotek, ale wszystkie z nich używają Imagemagick lub Cairo jako natywne zależności, chciałbym uniknąć instalowania czegokolwiek innego na serwerze.

Znalazłem lwip, ale nie mogę zrozumieć, jak napisać tekst na obrazie. Jak mogę zrobić?

+2

Czy można rozważyć zawijanie pliku PNG w pliku SVG i dodawanie tekstu w ten sposób? Moja odpowiedź [tutaj] (http://stackoverflow.com/questions/24413133/batik-put-svg-on-top-of-image/24413676#24413676) pokazuje podstawy tego podejścia. –

+0

svg nie jest obsługiwany przez stare przeglądarki, więc nie sądzę, że byłoby to wystarczające rozwiązanie dla różnych przeglądarek ... –

+0

Widzę twój punkt widzenia. Pytanie brzmi, jak daleko wrócisz do obsługi przeglądarki? Format PNG nie jest obsługiwany w starych przeglądarkach ... Można również przywrócić obraz SVG do formatu PNG za pomocą np. https://www.npmjs.org/package/svg2png –

Odpowiedz

9

Można użyć Jimp. Ma metodę drukowania:

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

Wygląda na to, że wszyscy obecnie obsługują SVG: http://caniuse.com/#feat=svg –

+0

Z Jimp nie możesz pisać tekstu o dowolnym rozmiarze i kolorze. – dumitru

+0

@dumitru Możesz. –