iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >node文字生成图片的示例代码
  • 348
分享到

node文字生成图片的示例代码

示例文字代码 2022-06-04 17:06:04 348人浏览 安东尼
摘要

今天老板提了需求,要在服务端生成邀请卡,嗯…,简单的说就是把要这张: 变成差多这样的: 后端搞ruby的哥们搞了个html转图片,说转得太慢了,我就把这坑接下来了 所以睡前就倒腾了下,搞了个简

今天老板提了需求,要在服务端生成邀请卡,嗯…,简单的说就是把要这张:

查看图片

变成差多这样的:

查看图片

后端搞ruby的哥们搞了个html转图片,说转得太慢了,我就把这坑接下来了

所以睡前就倒腾了下,搞了个简单的实现

解决思路

文字转svg -> svg转png -> 合并图片

相关轮子

images node.js 轻量级跨平台图像编解码库,不需要额外安装依赖 text-to-svg 文字转svg svg2png svg转png图片

示例代码


'use strict';

const fs = require('fs');
const images = require('images');
const TextToSVG = require('text-to-svg');
const svg2png = require("svg2png");
const Promise = require('bluebird');

Promise.promisifyAll(fs);

const textToSVG = TextToSVG.loadSync('fonts/文泉驿微米黑.ttf');

const sourceImg = images('./i/WEBwxgetmsgimg.jpg');
const sWidth = sourceImg.width();
const sHeight = sourceImg.height();

const svg1 = textToSVG.getSVG('魏长青-人人讲App', {
 x: 0,
 y: 0,
 fontSize: 24,
 anchor: 'top',
});

const svg2 = textToSVG.getSVG('邀请您参加', {
 x: 0,
 y: 0,
 fontSize: 16,
 anchor: 'top',
});

const svg3 = textToSVG.getSVG('人人讲课程', {
 x: 0,
 y: 0,
 fontSize: 32,
 anchor: 'top',
});

Promise.coroutine(function* generateInvitationCard() {
 const targetImg1Path = './i/1.png';
 const targetImg2Path = './i/2.png';
 const targetImg3Path = './i/3.png';
 const targetImg4Path = './i/qrcode.jpg';
 const [buffer1, buffer2, buffer3] = yield Promise.all([
  svg2png(svg1),
  svg2png(svg2),
 svg2png(svg3),
 ]);

 yield Promise.all([
  fs.writeFileAsync(targetImg1Path, buffer1),
  fs.writeFileAsync(targetImg2Path, buffer2),
  fs.writeFileAsync(targetImg3Path, buffer3),
 ]);

 const target1Img = images(targetImg1Path);
 const t1Width = target1Img.width();
 const t1Height = target1Img.height();
 const offsetX1 = (sWidth - t1Width) / 2;
 const offsetY1 = 200;

 const target2Img = images(targetImg2Path);
 const t2Width = target2Img.width();
 const t2Height = target2Img.height();
 const offsetX2 = (sWidth - t2Width) / 2;
 const offsetY2 = 240;

 const target3Img = images(targetImg3Path);
 const t3Width = target3Img.width();
 const t3Height = target3Img.height();
 const offsetX3 = (sWidth - t3Width) / 2;
 const offsetY3 = 270;

 const target4Img = images(targetImg4Path);
 const t4Width = target4Img.width();
 const t4Height = target4Img.height();
 const offsetX4 = (sWidth - t4Width) / 2;
 const offsetY4 = 400;

 images(sourceImg)
 .draw(target1Img, offsetX1, offsetY1)
 .draw(target2Img, offsetX2, offsetY2)
 .draw(target3Img, offsetX3, offsetY3)
 .draw(target4Img, offsetX4, offsetY4)
 .save('./i/card.png', { quality : 90 });
})().catch(e => console.error(e));

注意事项

text-to-svg需要中文字体的支持,不然中文会乱码

在我的破电脑上执行一次只花了500多毫秒,感觉足够了,分享出来希望能给大家一个参照

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: node文字生成图片的示例代码

本文链接: https://www.lsjlt.com/news/12312.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java 生成文字图片的示例代码
    本文主要介绍了java 生成文字图片的示例代码,分享给大家,具体如下:import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java...
    99+
    2023-05-31
    java 生成文字图片 ava
  • Python生成九宫格图片的示例代码
    一、前言 大家在朋友圈应该看到过用一张图片以九宫格的方式显示,效果大致如下: 要实现上面的效果非常简单,我们只需要截取图片的九个区域即可。今天我们就要带大家使用Python来实现...
    99+
    2024-04-02
  • node中怎么根据文字生成图片
    node中怎么根据文字生成图片,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。解决思路文字转svg -> svg转png -> ...
    99+
    2024-04-02
  • C#实现封面图片生成器的示例代码
    目录实现功能开发环境实现代码实现效果这个东西我已经用了有段时间了,从开始写文章就在用这个,主要原因还是因为我比较懒。懒得去寻找图片,同时又怕万一惹来版权争议。。。 跟我所有的文章的...
    99+
    2024-04-02
  • PHP生成饼图的示例代码
    首先要把php_iconv.dll和inconv.dll COPY到c:\winnt\system32下,直接上代码: < define("ANGLE_STEP", 5); /...
    99+
    2022-12-21
    PHP生成饼图 PHP 饼图
  • Java如何实现长图文生成的示例代码
    很久很久以前,就觉得微博的长图文实现得非常有意思,将排版直接以最终的图片输出,收藏查看分享都很方便,现在则自己动手实现一个简单版本的目标首先定义下我们预期达到的目标:根据文字 + 图片生成长图文目标拆解 支持大段文字生成图片 支持插入图...
    99+
    2023-05-31
    java 长图文 ava
  • C#实现文字视频生成器的示例代码
    目录前言实现功能开发环境实现代码实现效果前言 简单的描述下写这个软件的背景吧。之前短视频平台很火的时候,相信很多人都想进去分一杯羹,俺当然也不能免俗,但是人丑家穷又没才艺,咋办呢?看...
    99+
    2024-04-02
  • Python实现识别图片为文字的示例代码
    目录1、环境准备2、业务实现3、效果展示本来想着做一个将图片识别为文字的小功能,本想到Google上面第一页全是各种收费平台的广告。 这些平台提供的基本都是让我们通过调用相关的三方接...
    99+
    2024-04-02
  • 二维码图片生成器QRCode.js的示例分析
    这篇文章给大家分享的是有关二维码图片生成器QRCode.js的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。QRCode.js是一个实现生成二维码(QRCode)的js插...
    99+
    2024-04-02
  • 基于JS实现二维码名片生成的示例代码
    目录演示技术栈源码cssjs演示 技术栈 这里用到了一个二维码生成库qrcode.js下面是简单介绍: //初始化QRCode对象 var qrcode = new QRCode...
    99+
    2024-04-02
  • Python批量改变图片名字的示例代码
    目录一、系统自带的快捷改名二、用Python按要求改名三、在原有的图片上进行修改总结一、系统自带的快捷改名 1、打开对应的图片文件 2、全选后右击重命名 3、输入:Cat 注意...
    99+
    2024-04-02
  • js生成二维码的示例代码
    前段时间项目中需要开发扫描二维码查看信息的功能,在网上查了一些资料,把用过的方法进行总结需要导入一个qrcode的js 插件。 插件链接: qrcode.js下载地址,点击即可下载 ...
    99+
    2024-04-02
  • C#实现自定义打印文字和图片的示例代码
    目录1.调用打印机设置2.关联文档3.绘制内容C#中打印其实就是自己绘图+调用系统打印函数,于是便有了以下操作 1.调用打印机设置 如果你想在打印前设置打印机属性(或者切换打印机),...
    99+
    2024-04-02
  • Android 给图片加上水印的示例代码(支持logo+文字)
    本文介绍了Android 给图片加上水印的示例代码(支持logo+文字),分享给大家,具体如下:现在我们想要往图片上打上水印,该水印应符合这样的需求的: 支持logo+文字; 文字信息支持多行展示; 用户可以选择水印在图片上的生成位置...
    99+
    2023-05-30
    android 图片 水印
  • mybatis plus自动生成代码的示例代码
    写一个简单的mybatis plus插件自动生成代码的例子 pom.xml 添加配置 <!-- mybatis plus 插件--> <dependency>...
    99+
    2024-04-02
  • vue3生成随机密码的示例代码
    目录实现效果实现思路完成布局完成生成随机数的方法完成生成随机密码的方法部分代码总结实现效果 实现思路 完成布局完成生成随机数的方法完成生成随机密码的方法 完成布局 布局直接用ele...
    99+
    2024-04-02
  • python代码提取图片文字
    步骤一:安装两个库 需要安装pytesseract和PIL两个库,然后还要安装tesseract-ocr识别引擎 问题一:安装两个库失败 这个博主讲的很详细参考链接lpython3安装pil报错 使用...
    99+
    2023-08-31
    python 深度学习 windows
  • php生成二维码合成文字、背景图并保存本地图片
    目录 1、实现效果,二维码二维码合成文字、背景图 2、下载并引入qrcode 3、创建static文件夹下载字体和背景图到这 4、创建test2.php,合成代码   1、实现效果,二维码二维码合成文字、背景图 2、下载并引入qr...
    99+
    2023-09-23
    php 开发语言
  • Flutter 生成图片保存至相册的示例
    目录基本思路添加依赖实现代码遇到一个需求,需要用 Flutter 生成图片,最终实现的效果如下: 基本思路 使用 Canvas 绘制图片中各元素,然后使用 PictureReco...
    99+
    2024-04-02
  • Java图片转字符图片的生成方法
    前面介绍了一篇java实现图片灰度化处理的小demo,接下来再介绍一个有意思的东西,将一个图片转换成字符图片 借助前面图片灰度化处理的知识点,若我们希望将一张图片转成字符图片,同样可...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作