用代码生成Glitch Art风格的抖音字体

article/2025/4/21 11:08:33

最近看到不少文章教大家用 photoshop 实现抖音的 logo 跟字体,我也非常喜欢这种风格的字体,于是趁着晚上的时间,动手用代码实现了下此类风格的字体特效,顺便开发了个小工具,地址见文末。本文主要是从 艺术手法JS 前端 实现 2 个方面进行梳理,我们可以看到 如何用代码来描述艺术手法 ,达到 自动化生成某一风格作品 的目的。

我们先了解下抖音的这种 logo 的艺术风格。抖音 logo 这种设计手法,是故障艺术 Glitch Art 中的“ 错位 ”。故障艺术还有 燥波、失真、毛刺 等等其他设计手法。

Glitch 这个词, 常指电脑或硬件设备出小毛病。 著名的美国宇航员 John Glenn 对这种现象的表述为:

"Literally, a glitch is a spike or change in voltage in an electric current."

从字面上看,故障是电流中的尖峰或电压变化。

故障艺术 GlitchArt
作为一种艺术形式,产生于我们生活中一些十分常见的场景,例如数字设备发生故障的场景,当电视、电脑等设备的软件或硬件出现问题后,可能会造成视频音频播放异常,在视觉上,画面变成 破碎 、带有缺陷的图像, 颜色失真 。艺术家们却从这些故障中发现了美,他们认为故障产生的美除了代表不完善之外,更意味着意外和变化, 每一次故障的发生都像是打破常规的一次再创造

看2个案例:
Adidas x 大疆也运用故障艺术效果推出了新款限鞋盒,运动与科技的跨界联姻:

还有动态海报的案例:
艺术家总是能从生活中发现美,从厂房的破旧发觉 破旧之美 ,裸露的钢结构与斑驳的混凝土让人感受到存在的真实感。再如电影中常见的“ 暴力美学 ”,将暴力的动作场面仪式化,要么把影片中的枪战、打斗场面消解为无特定意义的游戏、玩笑;要么把它符号化,作为与影片内容紧密相关的视觉和听觉的审美要素。如下图的电影海报作品采用黄色、黑色、红色,把暴力美学融入海报设计中。


再看电影 《攻壳机动队》 的海报,强烈的 纵向、横向的线条感

有了以上的认知基础,我们从艺术手法上提炼出抖音 logo 及海报字体的手法:

艺术手法1
错位

艺术手法 2
横向线条感

接下来, MixLab 这边教大家用代码实现这一风格,并开发一个 小工具 ,用于以后制作此类字体风格,帮大家节省时间,还可以升级加入 生成 GIF 动图 的功能。我们先分析下抖音的 logo ,这是一个图形, 向左向右偏移左边跟右边的分别赋予2个不同颜色 。如下图所示:

最上面一种实现是比较简单的,只要使用偏移,重叠3个字样就行;下面一种涉及到2个字样的 交集 运算,处理起来也稍复杂,但效果更精细,本文采用的是下面一种实现方式。
一个抖音风格的字体构成是由3部分构成的,分别是 左上青色字样、中间白色字样、右下红色字样 ,我们可以用前端 canvas 实现,先绘制文字内容至画布,然后分别向左上、右下拷贝一份,这里主要应用到了 globalCompositeOperation 属性,各种 globalCompositeOperation 的效果,可以一一试验,尝试效果。
下面开始一步步用代码实现:

技术实现 1
偏移及 xor 操作

1.1

选一款接近抖音风格的字体:

免费商用字体:
站酷酷黑体
http://www.zcool.com.cn/special/zcoolfonts/#3rdPage

1.2

先绘制左上方的字样


 
 
ctx.textBaseline="top"; ctx.font=this.font; ctx.fillStyle=this.colorLeft; ctx.fillText(word,x-offset,y-offset);

1.3

绘制右下的字样


 
 
ctx.globalCompositeOperation="xor"; ctx.fillStyle=this.colorRight; ctx.fillText(word,x+offset,y+offset);

1.4

新建一个 canvas ,绘制背景及中间的字样


 
 
var canvasBg=document.createElement('canvas'), ctxBg=canvasBg.getContext('2d'); canvasBg.width=this.ctx.canvas.width; canvasBg.height=this.ctx.canvas.height; ctxBg.fillStyle=this.colorBg; ctxBg.fillRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height); var word=this.word, offset=this.offset, x=this.x, y=this.y; var ctx=this.ctx; ctxBg.textBaseline="top"; ctxBg.font=this.font; ctxBg.fillStyle=this.color; ctxBg.fillText(word,x+offset,y+offset);

1.5

把第3步的画布绘制到第4步中的背景中


 
 
ctxBg.drawImage(ctx.canvas,0,0);

技术实现 2
sin 函数 ,getImageData putImageData 像素级处理

2.1

分别计算出切割字样片段的方框坐标、高度


主要是使用 sin 函数,随机计算出一些高度值,映射到字样的高度中进行切割,这边默认设置成切割成10段。代码见 DYText.prototype.generate 的 get 部分。

2.2

为实现横向的线条感,需计算风格化后的坐标位置。


这里由于篇幅所限,详细可以在知识星球咨询。代码见 DYText.prototype.generate 的 put 部分。

至此,我们写了个 JS 库,用于自动生成抖音风格的字样。除了生成 png 图,我们也可以继续拓展功能,这边选择了开源库:
http://jnordberg.github.io/gif.js/

在前端利用 web workers 生成 GIF ,生成速度还不错。代码如下:

 
 
var gif = new GIF({ workers: 20, quality: 10, workerScript:'./js/gif.worker.js' }); var frames=this.createFrames(); for (let index = 0; index < frames.length; index++) { gif.addFrame(frames[index], {delay:200}) }; gif.on('finished', function(blob) { cb(URL.createObjectURL(blob)); }); gif.render();

其中 createFrames 是 DYText.prototype.createFrames ,用于生成不同状态下的字体,并存为一个canvas ,保存到一个 frames 数组里。
cb ( URL.createObjectURL ( blob ) ) 是一个回调函数,因为 GIF 的生成是异步的,所以使用回调函数 cb 把生成的 base64 传出来,写到一个 img 标签的 src 即可显示。
一个错位、横向线条感的字体风格生成器的 JS 库 就完成了,后面可以自行添加 UI 界面,或者扩展 JS 库。我们总结下主要使用的艺术手法,错位及横向线条感,通过偏移、xor 操作、sin 函数、getImageData 及 putImageData 像素级处理等技术手段,实现了自动创作的功能。我们可以看到, 从艺术手法到技术实现的过程,艺术可以被算法清晰地描述,反过来使用算法生成艺术作品也是成立的

错位
x
偏移及 xor 操作

横向线条感
x
sin ,getImageData putImageData


以上为全文内容。最近我在思考把文章当成产品来打磨,定了个小基调: 一篇文章尽量涉及2个不同领域的内容,跨界思考之间的关联性 。欢迎读者在微信群交流,入群方式留言获取。

热门文章推荐:
TensorFlow.js、迁移学习与AI产品创新之道​mp.weixin.qq.com
关于【科技中的设计师】,这可能是最走心的一篇文章​mp.weixin.qq.com
设计师/产品经理是否需要懂技术?​mp.weixin.qq.com
PC,建议浏览器chrome,体验此工具:
https://shadowcz007.github.io/DYText/



http://chatgpt.dhexx.cn/article/YuaMvhMN.shtml

相关文章

mfc对话框ok没效果_利用PS制作逼真双重曝光效果案例演示,合成紫色城市建筑风格海报图片...

PS合成得好&#xff0c;那场景海报图制作就轻松了&#xff0c;我们通常在欣赏案例作品是发现不少大气的城市建筑风格的海报图片&#xff0c;是怎么样制作合成的呢&#xff0c;今天我们来分享PS制作逼真双重曝光效果的海报教程。摄影时&#xff0c;利用多重曝光&#xff0c;可以…

设计干货模板|孟菲斯风格促销海报让作品艺术加分!

对于孟菲斯&#xff0c;或许你不知道这专业词是什么意思。当你看到下面的图&#xff0c;是不是感觉有点似曾相识。 复古又新潮的设计&#xff01; 为什么叫“孟菲斯”&#xff1f;据说&#xff0c;设计师Ettore Sottsass与一群年轻设计师在家里的公寓聚会&#xff0c;当时播放…

怎么做抖音故障艺术风格人物照片效果

今天我们就用陌鱼社区“80年代复古故障抖音海报效果PS动作”,简单快速制作出复古故障艺术风格人物照片海报效果,只要按这个步骤来就可以制作出如图效果,下面是这个动作制作的一些效果&#xff1a; 01、载入笔刷、图案、动作具体方法可参考下图,全部载入之后关闭软件。 02、把软…

如何用ps做故障艺术风格效果

今天这个教程主要是用PS动作来做的&#xff0c;能给我们在工作上面带来很大的方便&#xff0c;特别是突然做故障艺术风格海报的人来说&#xff0c;这个还是非常有用滴&#xff0c;至于动作怎么找&#xff0c;可以搜“赛博故障风格海报艺术效果PS动作”。 01、还是老样子&#x…

AE教程丨1分钟学会制作信号故障风特效

信号故障风近几年还是很流行的&#xff0c;如何让自己的设计里也能有一些信号故障风的风格呢&#xff1f;今天的教程就来帮助大家学习AE制作故障风视频。 AE制作信号故障风视频效果教程 1.在绘图工具内制作相应的文字海报并导入到AE&#xff1b; 2.新建纯色图层做抖动效果&…

JAVA线上故障排查全套路

线上故障主要会包括cpu、磁盘、内存以及网络问题&#xff0c;而大多数故障可能会包含不止一个层面的问题&#xff0c;所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题的&#xff0c;基本上出问题就是df、free、top 三连&#x…

Ps|故障风格效果

欢迎点击「算法与编程之美」↑关注我们&#xff01; 本文首发于微信公众号&#xff1a;"算法与编程之美"&#xff0c;欢迎关注&#xff0c;及时了解更多此系列文章。 欢迎加入团队圈子&#xff01;与作者面对面&#xff01;直接点击&#xff01; 抖音作为当代人消遣时…

故障效果,制作抖音效果的幻影海报

故障效果&#xff0c;制作抖音效果的幻影海报 感兴趣的小伙伴可以关注我哦&#xff0c;有什么不懂可以加群问&#xff1a;741090028 本篇教程通过PS制作抖音效果风格的海报&#xff0c;抖音风格又叫故障效果和幻影效果&#xff0c;前者叫的多&#xff0c;此类风格之前就很流行…

如何用PS制作故障风格的海报

前言 近几年&#xff0c;故障艺术又在设计圈中掀起了一把火&#xff0c;无论是先前《攻壳机动队》的海报&#xff0c;还是现在抖音的logo&#xff0c;一些我们看着是缺陷的东西在设计师的眼里也大有文章&#xff0c;今天就主要来讲讲如何通过PS来制作一张故障风格的海报。 《…

UI设计教程分享:PS故障风海报制作教程

1.首先找一张看起来很酷的图&#xff08;也可以选择自己喜欢的图片&#xff09;&#xff1b; 2. 复制图层&#xff0c;点击添加图层样式&#xff0c;选择混合选项&#xff0c;在高级混合里面的通道选项&#xff0c;有R、G、B三个通道选项&#xff0c;默认是全部勾选的状态&…

PS故障风海报制作技术分享

1.首先找一张看起来很酷的图&#xff08;也可以选择自己喜欢的图片&#xff09;&#xff1b; 2. 复制图层&#xff0c;点击添加图层样式&#xff0c;选择混合选项&#xff0c;在高级混合里面的通道选项&#xff0c;有R、G、B三个通道选项&#xff0c;默认是全部勾选的状态&…

MATLAB 制作抖音同款故障风海报

效果&#xff1a; 步骤 1.参数设定及图片导入 可以只更改背景图片其实 bkgPicimread(‘test.jpg’);%图片地址 lineDensity0.6; %故障线条出现概率 lineLenRange[50,80]; %故障线条长度范围 greenMoveLen10; %绿移距离 原始图片&#xff1a; 2.图片灰度化及红蓝背景构造…

In-Loop Filters in HEVC

有两种滤波&#xff0c;一个deblock filter用来减弱因为transform和预测边界的不联系性&#xff1b;另外一个是SAO&#xff0c;通过减弱振铃效应和改变像素的强度来提升画质。https://blog.csdn.net/u014470361/article/details/94641124解释什么是块效应和振铃效应。 Deblocki…

改进维纳滤波的实现——光学稀疏孔径成像系统图像恢复算法研究 陈灏

本文简单实现了浙江大学陈灏硕士学位论文《光学稀疏孔径成像系统图像恢复算法研究》(2017)中4.2章节提及的改进维纳滤波算法。 前情提要&#xff1a;维纳滤波函数中不同K(噪声与原属图像功率谱之比)的取值对应复原效果不同&#xff0c;当K值比较小时(10^-4~10^-3)时&#xff0c…

冈萨雷斯DIP第4章知识点

文章目录 4.1 背景4.3 取样和取样函数的傅里叶变换4.5 二变量函数的傅里叶变换4.6 二维 DFT 和 IDFT 的一些性质4.6.6 二维离散卷积定理 4.7 频率域滤波基础4.7.3 频率域滤波步骤小结4.7.4 空间域和频率域滤波之间的对应关系 4.8 使用低通频率域滤波器平滑图像4.9 使用高通滤波…

频域图像增强(图像的频域分析)高通低通滤波器

1. 频率域平滑&#xff08;低通&#xff09; 图像的平滑除了在空间域中进行外&#xff0c;也可以在频率域中进行。 由于噪声主要集中在高频部分&#xff0c;为去除噪声改善图像质量&#xff0c;滤波器采用低通滤波器​​​​​​​ 来抑制高频成分&#xff0c;通过低频成分&a…

9.频率域锐化滤波

目录 一 理想高通滤波器 定义 二 巴特沃斯高通滤波器[BLPF] 定义 三 高斯高通滤波器[GLPF] 四 振铃效应对比 五 示例 六 区别和联系 数字图像处理的配套视频教程&#xff1a; 1.【冈萨雷斯-数字图像处理】开始安排续数字图像处理的教程_哔哩哔哩_bilibili 2. 数字图像…

【示波器专题】示波器探头的负载效应

理想的示波器探头可以轻松、精确的复制被探测信号。然而在现实的情况下,探头成为了电路的一部分。如在星球文章:【示波器专题】示波器探头的原理深入——无源探头 中我们讲到一个例子,低阻无源探头的最大好处就是以较低的价格提供了比较高的测试带宽。但缺点就是输入阻抗低(…

编码压缩带来的几种效应和原因

吉布斯效应 先来简要回顾一下吉布斯效应。 对于Gibbs现象&#xff0c;百度百科解释为&#xff1a;吉布斯现象&#xff08;又叫吉布斯效应&#xff09;&#xff1a;将具有不连续点的周期函数&#xff08;如矩形脉冲)进行傅立叶级数展开后&#xff0c;选取有限项进行合成。当选…

21.失真/低高通/振铃效应/旁瓣泄漏效应/频域滤波/图像深度/频带/线性滤波源码分析 -- OpenCV从零开始到图像(人脸 + 物体)识别系列

本文作者&#xff1a;小嗷 微信公众号&#xff1a;aoxiaoji 吹比QQ群&#xff1a;736854977 简书链接&#xff1a;https://www.jianshu.com/u/45da1fbce7d0 本文你会找到以下问题的答案: 失真/低高通/振铃效应和旁瓣泄漏效应/图片深度/频带/图像细节/线性滤波源码分析 失…