python 图片加文字 文字自动上下左右居中 自动换行居中对齐

news/2024/12/22 13:29:54/
一.实现效果展示

在这里插入图片描述

二.代码
python"># -*- coding: utf-8 -*-
# @Time    : 2024/9/26 17:22
# @Author  : Cocktail_pyfrom PIL import Image, ImageFont, ImageDrawdef split_string(s, num_parts):length = len(s)chunk_size = length // num_partsremainder = length % num_partsparts = ['' for _ in range(num_parts)]start = 0for i in range(num_parts):end = start + chunk_size + (1 if i < remainder else 0)parts[i] = s[start:end]start = endreturn partsdef image_add_text(background_image_path,title_text,border_width=30):"""图片加文字 文字自动居中对齐白色、加粗、字号65px、上下左右居中:param background_image_path 背景图:param title_text 需要加的文字:border_width 设置距离单边距离"""image = Image.open(background_image_path)# 设置字体font = ImageFont.truetype('simsun.ttc', 65)draw = ImageDraw.Draw(image)cnt = 1img_width = image.widthflg =Falsewhile True:all_tx_list = split_string(title_text,cnt)for inx,txt in enumerate(all_tx_list):# 获取文本的宽度和高度text_width, text_height = draw.textsize(txt, font=font)if text_width < (img_width -border_width*2) and (inx+1 == len(all_tx_list)):flg=Truebreakif flg==True:breakcnt +=1txt_new = "\n".join(all_tx_list).strip()text_width, text_height = draw.textsize(txt_new, font=font)# 计算标题的位置,使其在图片上下左右居中x = (image.width - text_width) // 2y = (image.height - text_height) // 2# 设置白色、加粗的文本颜色text_color = (255, 255, 255)draw.text((x, y), txt_new, font=font, fill=text_color, stroke_width=2, stroke_fill=None)# 保存添加标题后的图片image.save('image_with_title.png')if __name__ == '__main__':title_text = '五角大楼回应中国发射洲际导弹 【#五角大楼回应中国发射洲际导弹#】'background_image_path = '900x380背景.png'image_add_text(background_image_path,title_text,border_width=20)

http://www.ppmy.cn/news/1530934.html

相关文章

【Android】浅析MVC与MVP

【Android】浅析MVC与MVP 文章目录 【Android】浅析MVC与MVP什么是架构&#xff1f;MVC架构Model-View-ControllerModelViewController解决什么问题数据的流向MVC 模式的工作流程 MVC 架构模式的优缺点 MVP架构Model-View-Presenter解决什么问题数据流向MVC 和 MVP 的核心区别&…

大型语言模型 (LLM) 劫持攻击不断升级,导致每天损失超过 100,000 美元

Sysdig 威胁研究团队 (TRT) 报告称&#xff0c;LLMjacking&#xff08;大型语言模型劫持&#xff09;事件急剧增加&#xff0c;攻击者通过窃取的云凭证非法访问大型语言模型 (LLM)。 这一趋势反映了 LLM 访问黑市的不断增长&#xff0c;攻击者的动机包括个人使用和规避禁令和制…

java mybaits oracle插入返回主键

在MyBatis中&#xff0c;要实现在插入数据后返回主键&#xff0c;可以在Mapper的XML文件中使用useGeneratedKeys属性和keyProperty属性。以下是一个示例&#xff1a; 首先&#xff0c;确保你的Oracle表有一个可以自动生成主键的字段&#xff0c;比如使用Oracle的序列。 CREAT…

1小时极限速通MC局域网联机:PCL2 + Zerotier局域网联机方案

目录 前言 你需要在开始之前做什么&#xff1f; 你需要什么 你需要下载什么 谁&#xff0c;需要做什么&#xff1f; STEP I&#xff1a;创建/加入一个子网 创建一个子网&#xff08;子网的维护者做&#xff09; 加入一个子网&#xff08;其他人做&#xff09; 现在... …

2024!再见前端!

各位朋友大家晚上好&#xff0c;夜深了&#xff0c;睡不着&#xff0c;想想还是写一篇文章和大家说再见吧&#xff01; 自2014年入行前端以来&#xff0c;满打满算差不多整整十年了&#xff0c;这十年可以说是见证了中国整个互联网的起飞到全盛时期。这期间经历了电商、金融、…

贪心算法(4)

题一.K次取反后最大化的数组和&#xff08;LeetCode&#xff09; 题目描述 给你一个整数数组 nums 和一个整数 k &#xff0c;按以下方法修改该数组&#xff1a; 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择同一个下标 i 。 以这种方…

MATLAB基于传统方法的车道线检测实现

MATLAB基于传统方法的车道线检测实现 本文实现的是基于传统方法的车道线检测&#xff0c;所谓传统方法就是没有涉及到深度学习算法&#xff0c;基于直观的手段和数学知识来实现&#xff0c;后期会实现基于深度学习的车道线检测方法。 实现步骤&#xff1a; Canny边缘检测手动…

如何使用 maxwell 同步到 redis?

文章目录 1、MaxwellListener2、MxwObject1. 使用Maxwell捕获MySQL变更2. 将Maxwell的输出连接到消息系统3. 从消息系统读取数据并同步到Redis注意事项 1、MaxwellListener package com.atguigu.tingshu.album.listener;import com.alibaba.fastjson.JSON; import org.apache.…