Преобразование текста в изображение



  • Добрый вечер. Есть ли решение которое позволяет преобразовать текст в изображение без пустых полей (чтобы полностью влезал текст по краям)

    Текст динамический так что размер изображения может меняться

    Сам шаблон с текстом в стандартном методе преобразования выравнивается по центру.
    Или может есть другой способ создания изображения при отправке сообщения в канал ТГ, хочу водяные знаки добавить



  • Ну примерно через костыли можно так, хотя наверно логичнее использовать nodejs 0_1518718322116_img_test.xml



  • @root https://www.npmjs.com/package/text2png
    Вот такой код запускаю в BAS. Но выходит ошибка Error: Cannot find module 'text2png'

    var fs = require('fs');
    var text2png = require('text2png');

    text2png('Example\nText', {
    font: '60px Futura',
    textColor: 'teal',
    bgColor: 'linen',
    lineSpacing: 10,
    padding: 20
    });



  • @teamgame ну тек модуль надо поставить может? он его как бы не видит и том и пишет.



  • @root Я установил все. Даже доп модули.
    Error: Cannot find module '../build/Release/canvas.node' - теперь. Где хранятся все модули? Хочу переустановить



  • @teamgame когда ставишь text2png где * напиши версию 1.0.1



  • @root ага пробовал. Толку 0. Может BAS криво устанавливает



  • @teamgame \apps\20.7.6\embedded\ папка модулей ну потом идет папка проекта и.т.д



  • @root Эта проблема из-за ошибки в установке
    Исправляли так - только как это сделать?
    Fixed by manually copying files from GTK to canvas/build/Release/

    И еще видимо модули от canvas надо установить, но как это сделать для BASa - вот в чем вопрос...
    Building the node-canvas module requires:
    A global installation of node-gyp.
    GTK 2
    For optional JPEG support (node-canvas 2.0 and later): libjpeg-turbo



  • @teamgame https://www.npmjs.com/package/image-watermark воообще по идее это больше вам подойдет



  • @root мне же надо сначала изображение сгенерировать. Но без GTK 2 не получится видимо в text2png. Пока не нашел достойных альтернатив



  • А что мешает выводить блок html и делать скриншот?
    К примеру здесь https://jsfiddle.net/pds1qs9c/



  • @Xstroy А это интересное решение! Можно и самому создать страницу через createElement().



  • @Fox естественно, можно подготовить свой шаблон под любые задачи
    К примеру так https://jsfiddle.net/pds1qs9c/18/
    Я бы просто создал на компе станичку и правил как угодно. Сервис удобен для теста или когда не хочется привязываться к файлу.



  • Спасибо. Думаю это самое быстрое решение. Жаль с модулем так и не решилась проблема (интересно возможно ли в БАСе сделать это)



  • @Xstroy Спасибо за идею) Но мне скорость важна, а это займет 1 секунду.

    Я с созданием страниц в JS я не работал



  • @teamgame Можно и без js. Создаём нужный html, сохраняем его и загружаем в браузере.
    Вот проект.

    Только надо будет заменять фигурные скобки:

    { - на {
    } - на }
    

    Иначе в шаблоне они пропадут.



  • @root теперь попробовал этот модуль для watermark

    Таймаут во время выполнения функции на встроенном языке

    var watermark = require('image-watermark');
    watermark.embedWatermark('12.jpg', {'text' : 'sample watermark'});

    Файл в папке ...\Roaming\BrowserAutomationStudio\apps\20.7.6 (и прямой путь пробовал)



  • @teamgame а зависимости все скачивает?



  • @root там была уже такая проблема в топике на ГХ. Так вроде и не решили
    npm WARN saveError ENOENT: no such file or directory, open 'C:\Users\anybo\package.json'
    npm WARN enoent ENOENT: no such file or directory, open 'C:\Users\anybo\package.json'
    npm WARN anybo No description
    npm WARN anybo No repository field.
    npm WARN anybo No README data
    npm WARN anybo No license field.

    • image-watermark@0.0.7
      added 2 packages and updated 1 package in 2.512s

    Это я даже в чистом nodejs проверил.



  • Решил не мучать себя и просто фоновую картинку с водяным знаком добавил в фон


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.