【运营神器】1分钟制作200张喜报(未完)

原创 | 侠女一枝

前沿:
你参加了某个微信社群吗?各种读书营、写作班层出不穷,400-500人的大群,社群管理是很大的任务。比如入群需要 每个人定制化“录取通知书”、“喜报”,毕业结营需要“毕业证书”、“优秀勋章”等等。社群设计组 需要出一套原创模板,然后安排4-7个设计小助手,PPT分工重复替换头像和昵称。

21世界最宝贵的是什么?是时间。

我经历了剽悍读书营 “精读营” 四五百张勋章制作的“折磨”之后,痛定思痛,发挥码农的精神,写了一套NodeJS 脚本,只需要一次配置勋章模板数据参数,运行代码即可自动生成几百张图片。

一、踩过的坑o(╥﹏╥)o

1)方法A: PPT自带的VBA脚本 宏

【运营神器】1分钟制作200张喜报(未完)_第1张图片
auto1-ppt.png

mac版PPT:苹果系统PPT禁止脚本读取系统文件。

与支持 VBA 的其他版本的 Office 应用程序不同,Office 2016 for Mac 应用程序是沙盒类型的应用程序。
沙盒限制应用程序访问应用程序容器之外的资源。这会影响与跨进程文件访问或通信有关的任何外接程序或宏。可以新命令 GrantAccessToMultipleFiles(),尽可能地降低沙盒处理的影响。但是:

Boolean  GrantAccessToMultipleFiles(fileArray) 

fileArray   POSIX 文件路径的数组

缺点:需要精确的文件路径,自动遍历不行

Windows版PPT:不自动录制宏,不记录打开批量文件的步骤,只能单文件合成,而且对象不能自动精确控制,特别是替换头像,生成新头像,鼠标操作是右键替换图片,js 代码其实是分五步,删除旧对象,新建对象,导入图片,剪裁成原型,原型位置定位。

结果:卒。

还有一个原因,VB这种老古董语言真的编程太不友好了

2)方法B:html + js 单网页canvas 合成图片

环境: 一台电脑 + 浏览器 + 一段js 代码
结果:可以生成单张喜报,但无法按次序自动生成几百张,浏览器不具有自动读取系统文件路径的权限。




    
    
    
    Canvas 批量合成Image
    


    
         not support canvas 
    
    



// html 代码,js部分后边统一讲

结果:思路可行,但批量卒。

3)方法C:Photoshop批量

PS批量动作,但执行费点时间,200张需要运行30分钟。

PS脚本个人感觉就是一把金庸武侠里的屠龙刀,用得好方可号令群雄,用不好电脑卡顿,GAME OVER。

结果:可行,但执行耗时久。适合少量

如下,为你介绍轻灵的倚天剑,Node JS。

二、为什么选NodeJS ?

前置知识:

(1) js 是啥东东?JavaScript 是啥?

js 英文单词科普200词(扇贝) [ 作者: steerpdog ] https://www.shanbay.com/wordlist/169468/450187/
JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

(2) node js

简单的说 Node.js 就是运行在服务端的 JavaScript。
官网http://nodejs.cn/
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。

(3) npm

Node.js 的包管理器 npm,是全球最大的开源库生态系统。

(4) canvas (HTML5新增标签)

英文直译: 画布。
Canvas API(画布)是在HTML5中新增的标签用于在网页实时生成图像,并且可以操作图像内容,基本上它是一个可以用JavaScript操作的位图(bitmap)。
Canvas 对象表示一个 HTML 画布元素 -。它没有自己的行为,但是定义了一个 API 支持脚本化客户端绘图操作。

侠女说: canvas代码操作中,画线、画圆、画字、图层叠加、像素单位px的等等概念和PS软件中的同名原理是共通的。代码绘制图形就好像是无形中一个人在机械得点按钮。

综上各种知识点说明

  1. js 是每个浏览器通用的脚本,编程简便,新手入门浅,深入广阔
  2. npm 有各种开源的图形库,下载即可用
  3. 基于2,有了nodejs的canvas库,方法B中合成单图片的代码,迭代改成多图异步就可以批量生产几百张不同人的喜报。

结果:可行,执行耗时极短,200张 2分钟以内完成。但安装环境步骤严谨,一次全局安装,以后永久使用。

三、安装环境

说明
(1)node 有很多优秀的开源图形库,比如强大而复杂的gm。gm是nodejs对GraphicsMagick和ImageMagick封装。GraphicsMagick和ImageMagick是老牌的图片处理工具,它们功能很强大,包括了图片的创建、编辑、合成、读取、转换、切割、颜色替换等各种图片处理功能。功能的强大就可能意味着安装和使用的复杂!
(2) 沿用前边的代码,所以采用 nodecanvas 2.0

GitHub node-canvas https://github.com/Automattic/node-canvas

分为如下几个步骤:

  1. 安装图形库

你可以快速 用命令行安装

系统OS 命令行Command
OS X Using Homebrew:
brew install pkg-config cairo pango libpng jpeg giflib

Using MacPorts:
port install pkgconfig cairo pango libpng jpeg giflib
Ubuntu sudo apt-get install libcairo2-dev libjpeg-dev libpango1.0-dev libgif-dev build-essential g++
Fedora sudo yum install cairo cairo-devel cairomm-devel libjpeg-turbo-devel pango pango-devel pangomm pangomm-devel giflib-devel
Solaris pkgin install cairo pango pkg-config xproto renderproto kbproto xextproto
Windows Instructions on our wiki

Homebrew OSX 系统需要先用内置的Terminal , 执行一段ruby语句安装

Install Homebrew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  1. 安装node 环境 https://nodejs.org/en/download/
  2. npm 安装nodecanvas库

新建一个文件夹,运行npm init ,然后一路enter,然后 运行

$ npm install canvas@next

成功如下:

四、代码实例

autoExport

- avators/     头像集合
- dist/        导出图片
- font/        字体   
- js/          脚本
- model/       模板背景
- resource/    额外资源
- index.html   静态js canvas 案例demo            
- node_modules   库
- package-lock.json           
- package.json  配置文件
- ReadMe.md     说明文档

程序流程分为以下几个部分

graph TB
A((配置参数))-->运行脚本nodeXXX;  
运行脚本nodeXXX-->B{是否报错};  
B{是否报错}-->|否|程序自动开始执行;  
B{是否报错}-->|是|C(重新设置参数再运行脚本); 
程序自动开始执行-->读取文件流;  
读取文件流-->绘制模板背景图;  
绘制模板背景图-->绘制昵称-姓名过滤;  
绘制昵称-姓名过滤-->绘制原型头像; 
绘制原型头像-->导出图片; 

代码解析

源码地址

(1)配置参数
(2)读取文件流
(3)绘制模板背景图
(4)绘制昵称
  • 1 符号过滤
  • 2 特殊昵称保留
(5)绘制原型头像
(6)导出图片

五、如何套模型运用

步骤一:

$ npm install //安装库

步骤二:
只需要打开PSD,或者用标注软件测量距离即可,计算修改配置参数若干。

特别注意头像地址路径、字体地址路径、导图文件路径的配置

步骤三:运行

$ node js/xb  // 执行程序

可以先用一张头像测试参数位置,测试通过后,再把执行所有头像。

六、容易出错的点

【1】中文乱码,书法字体不识别 ,如何筛选?
【2】昵称包含特殊数字、昵称过长,如何自动适配?
【3】模板头像原稿就不是绝对居中的,如何微调参数?

七、if你真学不会

综上所述,朋友,如果你还看不懂,或者你电脑是WinXP ,Win7不完全版本、NPM 下载不成功..... 各种BUG 不赘述。

if真(打*斯?)都学不会!

then私聊加我QQ,把头像集合+模板源文件给我,我帮你跑代码。

但是,要相信你自己,勇敢的学一下吧~

要求:

(1)头像统一命名规范,"昵称.jpg " or “学号-昵称.jpg ”,不要出现 "昵称-地区-职业" 这种多余的中文字。昵称中有数字和特殊符号的需要写.txt说明,不然一律当手误过滤, 比如 — - + ~*
(2)模板源文件最好PSD,便于识别特殊书法字体
(3)期望数量大于100张,谢谢_

我觉得一千一万的批量制作才能展示生产力。

代码改变世界 ,为自己增加竞争力。

八、其他高级运用

(1)排除法筛选全勤的名单生成勋章
(2)对比法读取优秀名单
(3)附加从Excel里读取10天数据生成打卡数据图 (坐标组,平面,倾斜)
【图一】 不倾斜的画布
【图二】 倾斜的画布
友情提示:图很好看,对坐标点的时候需要擦亮眼睛,一次次用同一张图测试位置。

(4)做成桌面可视化按钮点击的程序?
已卒…… 不同系统安装库不同、而且库非常大

图片设计 - 笙笙
所属社群 - 2018剽悍读书营2连

你可能感兴趣的:(【运营神器】1分钟制作200张喜报(未完))