当前位置: 首页 > news >正文

动态艺术:用Python将文字融入GIF动画

文章内容:

在数字媒体的多样化发展中,GIF动画作为一种流行的表达形式,常被用于广告、社交媒体和娱乐。本文通过一个具体的Python编程示例,展示了如何将文字以动态形式融入到GIF动画中,创造出具有视觉冲击力的动态艺术作品。使用OpenCV和PIL库,我们可以处理GIF的每一帧,将指定的文字按帧内的平均颜色填充,从而生成一个全新的、包含文字的GIF动画。
在这里插入图片描述
生成的效果:
在这里插入图片描述
是动图的效果。
以下是实现这一功能的完整代码:

import cv2
import numpy as np
from PIL import Image, ImageDraw, ImageFont
import osvfont='./fonts/方正像素字体.ttf'def text_paint_frame(frame, text, font, char_width, char_height):"""处理单个帧"""# 放大帧为原来的2倍frame = cv2.resize(frame, (frame.shape[1]*2, frame.shape[0]*2), interpolation=cv2.INTER_LINEAR)# 创建新的白底图片new_frame = Image.new('RGB', (frame.shape[1], frame.shape[0]), 'white')draw = ImageDraw.Draw(new_frame)# 遍历图片的每个字符位置for y in range(0, frame.shape[0], char_height):for x in range(0, frame.shape[1], char_width):if y < frame.shape[0] and x < frame.shape[1]:y_end = min(y + char_height, frame.shape[0])x_end = min(x + char_width, frame.shape[1])region = frame[y:y_end, x:x_end]avg_color = np.mean(region, axis=(0, 1))color = tuple(map(int, avg_color[::-1]))draw.text((x, y), text, font=font, fill=color)return new_framedef text_paint_gif(gif_path, text, font_path, font_size):# 加载字体try:if os.path.exists(font_path):font = ImageFont.truetype(font_path, font_size)else:font = ImageFont.truetype(vfont, font_size)except Exception as e:print(f"加载字体失败: {e}")font = ImageFont.load_default()# 获取文字的实际大小bbox = font.getbbox(text)char_width = bbox[2] - bbox[0]char_height = bbox[3] - bbox[1]# 打开GIFgif = Image.open(gif_path)# 准备新的帧frames = []duration = []try:while True:# 获取当前帧的持续时间duration.append(gif.info.get('duration', 100))# 转换帧为numpy数组frame = np.array(gif.convert('RGB'))# 处理帧new_frame = text_paint_frame(frame, text, font, char_width, char_height)frames.append(new_frame)# 移动到下一帧gif.seek(gif.tell() + 1)except EOFError:pass  # 到达GIF末尾# 保存新的GIFframes[0].save('output.gif',save_all=True,append_images=frames[1:],duration=duration,loop=0)# 显示第一帧frames[0].show()# 使用示例
text_paint_gif('./1.gif', 'B', vfont, 10)

此技术不仅可以用于艺术创作,也适用于广告制作和个性化媒体内容的开发,为传统的GIF动画添加了新的创意维度。通过调整文字内容和样式,可以制作出各种风格和主题的动态图像,满足不同场景和需求的应用。

http://www.lryc.cn/news/496716.html

相关文章:

  • 更多开源创新 挑战OpenAI-o1的模型出现和AI个体模拟突破
  • VR眼镜可视化编程:开启医疗信息系统新纪元
  • Ubuntu访问简书403
  • SQL高级应用——索引与视图
  • docker部署文件编写(还未尝试)
  • 缓存与数据库数据一致性 详解
  • 每日计划-1203
  • HTML5动漫主题网站——天空之城 10页 html+css+设计报告成品项目模版
  • 分布式会话 详解
  • 探索仓颉编程语言:官网上线,在线体验与版本下载全面启航
  • Ubuntu无法连接Linux
  • 【Spring】注解开发
  • 数字图像稳定DIS介绍目录
  • 【人工智能-基础】SVM中的核函数到底是什么
  • 字节青训Marscode——8:找出整形数组中超过一半的数
  • C++ 异步编程的利器std::future和std::promise
  • CRM 系统中的 **知识库功能** 的设计与实现
  • 重学设计模式-工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
  • 【C语言】结构体(四)
  • swift类方法为什么使用表派发?
  • php实现AES/CBC/PKCS5Padding加密
  • Anaconda3安装及使用
  • Argon2-cffi与argon2-cffi-bindings:深入理解及其应用
  • spring boot+jpa接入达梦数据库
  • Vite构建,用NodeJS搭建一个简单的Vite服务
  • R语言机器学习论文(六):总结
  • python---面向对象---综合案例(4)
  • 如何参加华为欧拉考试?
  • 算法预刷题Day9:BM28 二叉树的最大深度
  • exp_lr_scheduler理解