node实现文字生成图片代码分享

本文主要介绍了node文字转图片的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。

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

node实现文字生成图片代码分享

变成差多这样的:

node实现文字生成图片代码分享

后端搞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多毫秒,感觉足够了,分享出来希望能给大家一个参照。

相关推荐:

php原生图片合成和文字生成图片

讨论在PHP中如何把带有HTML内容的文字生成图片

分享Nodejs中用captchapng生成图片验证码的实例

以上就是node实现文字生成图片代码分享的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2790152.html

(0)
上一篇 2025年3月8日 18:51:59
下一篇 2025年3月7日 12:11:23

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • node文件批量重命名实例详解

    本文主要介绍了node文件批量重命名的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 在一个实际需求中,需要对一批文件(如:文本、图片)进行重命名,按照数字编号。正好借此熟悉了一下n…

    2025年3月8日
    200
  • node nvm实现node多版本管理方法

    本文主要介绍了详解node nvm进行node多版本管理,希望能帮助大家更好的掌握ode多版本管理知识,一起来学习一下本文吧。 写在前面 nvm(nodejs version manager)是nodejs的管理工具,如果你需要快速更新no…

    2025年3月8日 编程技术
    200
  • jQuery实现圆点图片轮播实例分享

    在页面的指定位置实现的图片自动的左右轮流切换展示效果,当点击图片左下的标签(或中间的小圆点)切换到对应的图片。接下来通过本文给大家分享用jquery实现圆点图片轮播效果实例代码,需要的朋友参考下,希望能帮助到大家。 图片轮播效果 : 在页面…

    2025年3月8日
    200
  • jQuery如何实现图片滑动效果

    图片滑动在很多地方都需要,本文主要介绍了jquery实现图片滑动效果的实例,具有很好的参考价值。下面跟着小编一起来看下吧,希望能帮助到大家。 思路:当鼠标进入元素时,触发hover中的第一个函数,离开时触发hover中的第二个函数。 如图所…

    2025年3月8日
    200
  • echarts实现的循环生成图效果示例分享

    本文主要介绍了jquery插件echarts实现的循环生成图效果,结合完整实例形式分析了echarts插件循环输出数字图形的实现步骤与相关操作技巧,并附带demo源码供读者下载参考,需要的朋友可以参考下,希望能帮助到大家。 1、问题背景: …

    2025年3月8日
    200
  • imgareaselect辅助后台实现图片上传裁剪方法教程

    本文主要为大家详细介绍了利用imgareaselect辅助后台实现图片裁剪的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。 因为项目当中用到图片裁剪,本来可以不用到后台进行裁剪的,但是要兼容万恶的IE浏览器,…

    2025年3月8日
    200
  • jQuery自动或手动图片切换实现方法分享

    学习js的时候本来积攒了很多有趣的小例子,但是苦于没有找到一些好的平台来展示这些js效果。今天发现了runjs这个分享代码的平台,本文主要为大家详细介绍了jquery自动或手动图片切换效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,…

    编程技术 2025年3月8日
    200
  • layer前端组件实现图片显示功能方法

    本文主要介绍了layui中layer前端组件实现图片显示功能的方法,结合实例形式分析了layui中layer组件调用图片显示功能的操作方法与相关注意事项,并提供了layer与layui源码下载,需要的朋友可以参考下,希望能帮助到大家。 实现…

    编程技术 2025年3月8日
    200
  • 关于Node全局变量global模块实例详解

    本文主要介绍node全局变量global模块,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 环境:Node v8.2.1; Npm v5.3.0; OS Windows10 在浏览器中我们有…

    2025年3月8日
    200
  • node通过实现express搭建自己的服务器实例

    本文主要介绍node通过express搭建自己的服务器 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 前言 为了模拟项目上线,我们就需要一个服务器去提供API给我们调用数据。这次我采用ex…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论