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

news2024/12/23 4:11:15
一.实现效果展示

在这里插入图片描述

二.代码
# -*- coding: utf-8 -*-
# @Time    : 2024/9/26 17:22
# @Author  : Cocktail_py

from PIL import Image, ImageFont, ImageDraw

def split_string(s, num_parts):
    length = len(s)
    chunk_size = length // num_parts
    remainder = length % num_parts
    parts = ['' for _ in range(num_parts)]
    start = 0
    for i in range(num_parts):
        end = start + chunk_size + (1 if i < remainder else 0)
        parts[i] = s[start:end]
        start = end
    return parts


def 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 = 1
    img_width = image.width
    flg =False
    while 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=True
                break
        if flg==True:
            break
        cnt +=1

    txt_new = "\n".join(all_tx_list).strip()
    text_width, text_height = draw.textsize(txt_new, font=font)
    # 计算标题的位置,使其在图片上下左右居中
    x = (image.width - text_width) // 2
    y = (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.coloradmin.cn/o/2168011.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数智化引领传媒新变革,又一场技术的盛宴!

文 | 智能相对论 作者 | 陈泊丞 2024巴黎奥运会在塞纳河畔为世界呈现了一场精彩绝伦的体坛盛宴。回顾今年的直播&#xff0c;每一个观众或许都可以在屏幕前感受到更胜往届的体育表现力和竞赛节目效果。 在超高清制播技术支持下&#xff0c;不仅制播画质变高清了&#xff0c;…

ASO关键词研究-9个步骤帮您找到应用商店优化的完美关键词

应用商店优化是一种让您的应用展示给更多用户的有效方法。为此&#xff0c;您需要在应用元数据中使用正确的关键字&#xff0c;以帮助 Apple 和 Google 的搜索算法知道何时在搜索结果中显示您的应用。如果您做得正确&#xff0c;他们会向更多人展示您的应用&#xff0c;而更多的…

python全栈学习项目案例(一)atm+购物车

atm购物车 文章目录 atm购物车一、项目需求二、项目构架图三、视图的实现四、登录认证五、转账功能六、购物功能 一、项目需求 二、项目构架图 其中用户功能层中有呈现给用户的视图、各个功能的简单函数(这些简单函数需要调用接口层中函数的具体功能) 接口层存放各个功能的具体…

自动化测试数据管理问题

在自动化测试中&#xff0c;关于数据管理的更好实践确实存在&#xff0c;这些实践可以帮助提高测试的效率和质量。以下是一些推荐的最佳实践&#xff1a;1. 使用Test Data Builder模式&#xff1a;这种模式可以帮助隐藏测试数据准备的细节&#xff0c;在测试代码中只显示地对测…

每日OJ题_牛客_NC1大数加法_高精度加法

目录 牛客_NC1大数加法_高精度加法 题目解析 C代码 Java代码 牛客_NC1大数加法_高精度加法 题目解析 模版类型的算法题&#xff0c;模拟加法列竖式运算的过程即可。 假定算法流程&#xff1a; 设定 i&#xff0c;j 两指针分别指向 s&#xff0c;t 尾部&#xff0c;模拟…

2024网络安全面试指南(非常详细)收藏这一篇就够了

1.1 网络安全行业现状 安全行业起步晚。安全行业整体起来才没几年&#xff0c;多数企业因为资源投入和建设时间原因导致覆盖面和深入度都不够&#xff0c;这其中甚至包括一些国内大厂&#xff0c;并没有想象的那么安全。其安全水位仅能应付一些白帽子级别&#xff0c;针对专业…

记录一次学习--委派攻击学习

目录 为什么要使用委派 什么账号可以使用委派 非约束性委派 这里有一张图 利用 流程 约束性委派 这里有一张图 如何利用 条件 具体流程 为什么要使用委派 这个是因为可能A服务需要B服务的支持&#xff0c;但是A服务的权限不可以使用B服务。然后这时就可以让域用户将…

2024年【烟花爆竹经营单位主要负责人】免费试题及烟花爆竹经营单位主要负责人考试技巧

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 烟花爆竹经营单位主要负责人免费试题是安全生产模拟考试一点通总题库中生成的一套烟花爆竹经营单位主要负责人考试技巧&#xff0c;安全生产模拟考试一点通上烟花爆竹经营单位主要负责人作业手机同步练习。2024年【烟…

吉林大学微机接口实验五:D/A转换

1.实验内容 2.实验原理/预备知识 D/A转换器TLC7528是关键&#xff0c;其用法参见&#xff1a; 芯片部件汇总&#xff1a;常用功能部件大全-CSDN博客 直接找"TLC7528 D/A数模转换器"&#xff08;实际上学校的讲义已经讲的很清楚&#xff0c;我只是给搬到了博客里&…

C++ | Leetcode C++题解之第430题扁平化多级双向链表

题目&#xff1a; 题解&#xff1a; class Solution { public:Node* flatten(Node* head) {function<Node*(Node*)> dfs [&](Node* node) {Node* cur node;// 记录链表的最后一个节点Node* last nullptr;while (cur) {Node* next cur->next;// 如果有子节点…

【源码+文档+调试讲解】重庆旅游景点数据分析系统python

摘 要 重庆旅游景点数据分析系统是一个专门为旅游管理部门和景点运营商设计的信息化工具&#xff0c;它通过集成和分析各种数据来优化景点管理和提升游客体验。该系统能够实时收集游客流量、景点信息、满意度反馈等关键信息&#xff0c;帮助管理者洞察游客行为和市场趋势。系统…

C++ const成员函数

个人主页&#xff1a;Jason_from_China-CSDN博客 所属栏目&#xff1a;C系统性学习_Jason_from_China的博客-CSDN博客 所属栏目&#xff1a;C知识点的补充_Jason_from_China的博客-CSDN博客 C const引用常量 使用规则 引用常量对象&#xff1a;可以引用一个常量对象&#xff0…

Unity 的Event的Use()方法

对于Event的Use方法&#xff0c;其在调用后将不会再判断同类型的事件 这种情况下&#xff0c;第二个MosueDown不会进入&#xff0c;因为已经Use 如果把Use注释掉 依旧能进入第二个MosueDown 也就是说当使用了Use方法&#xff0c;相同的事件类型不会进第二遍

【文心智能体】从零到一的优质智能体构建全攻略

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;Linux从入门到进阶 欢迎大家点赞收藏评论&#x1f60a; 目录 创作平台&#xff1a;文心智能体平台&#xff1a; 基本配置智能体名称与简介人物设定回复逻辑prompt提示词的编写开场白设定与开场白…

利士策分享,领导者素养自检:五维审视法

利士策分享&#xff0c;领导者素养自检&#xff1a;五维审视法 在人生的广阔舞台上&#xff0c;每个人都蕴藏着成为领导者的潜力&#xff0c;但如何知晓自己是否已具备那份独特的素养&#xff1f; 这需要我们进行一次深刻而诚实的自我审视。 以下五个维度&#xff0c;或许能为你…

K8s Calico替换为Cilium,以及安装Cilium过程(鲁莽版)

迁移CNI插件的3种办法&#xff1a; 1、创建一个新的集群&#xff0c;通过Gitops的方式迁移负载&#xff0c;然而&#xff0c;这可能涉及大量的准备工作和潜在的中断。 2、另一种方法是重新配置/etc/cni/net.d/指向Cilium。但是&#xff0c;现有的pod仍将由旧的…

AI 驱动的数据库 TDSQL-C 实战与电商可视分析

目录 一、背景介绍二、实验介绍三、效果展示四、实操指导4.1 系统设计4.2 环境搭建4.2.1 购买 TDSQL-C Mysql Serverless 实例4.2.2 部署HAI高算力服务器本地python环境搭建 4.3 应用构建4.3.1 搭建项目框架4.3.2 TDSQL-C 数据库&HAI云算力配置4.3.3 应用开发4.3.4 运行程序…

将本地文件上传至虚拟机

1、查看虚拟机ip地址 ip addr 2、xshell连接上虚拟机 连接root连接不上的解决办法更改配置文件vim /etc/ssh/sshd_config 重启&#xff08;sudo service ssh restart&#xff09;并查看是否开启ssh服务&#xff08;sudo ps -e | grep ssh&#xff09; 即可连接成功 3、复制文…

深度学习500问——Chapter15:异构计算,GPU和框架选型(2)

文章目录 15.5 GPU硬件环境配置推荐 15.5.1 GPU主要性能指标 15.5.2 购买建议 15.6 软件环境搭建 15.6.1 操作系统选择 15.6.2 常用基础软件安装 15.5 GPU硬件环境配置推荐 15.5.1 GPU主要性能指标 GPU的性能主要由以下三个参数构成&#xff1a; 计算能力。通常我们关心的是…