写点什么

使用 python 生成文字图片,画圆圈 ,生成圆形图片

作者:技能实验室
  • 2022-10-19
    河南
  • 本文字数:1934 字

    阅读完需:约 1 分钟

使用 python 主要使用的是 PIL 库,

安装所需库 PIL

安装方式推荐有很多种,推荐使用 pip;


pip 是 Python 的包安装程序。其实,pip 就是 Python 标准库(The Python Standard Library)中的一个包,只是这个包比较特殊,用它可以来管理 Python 标准库(The Python Standard Library)中其他的包。pip 是一个命令行程序。 安装 pip 后,会向系统添加一个 pip 命令,该命令可以从命令提示符运行。


安装 pip:


  • 安装 python; 这个是必须安装的;

  • 下载 pip:

  • 官网地址:https://pypi.org/project/pip/#downloads; 下载完毕后,解压

  • 打开命令行窗口,进入到 pip 解压后的目录;执行代码

  • python3 setup.py install

    进行安装,安装完成后,将 pip 加入到系统环境变量中

  • 验证打开命令行窗口,输入 pip list 或者 pip3 list


以上只针对于 windows 系统,其他系统也可以参考;


  • 安装所需库:打开命令行窗口,输入执行以下代码,并回车

  • pip install pillow

  • 等待提示第三库安装成功既可;


安装成功后引入所需库:


#!/usr/bin/env python# encoding: utf-8
from PIL import Image , ImageDraw,ImageFont
复制代码

用 python 画圆圈

使用 python 画圆,主要使用的是 ImageDraw 里面的 ellipse 函数;主要步骤如下:


  • 加载图片。Image.new()

  • 加载到 ImageDraw

  • 调用 ellipse 方法


def genCycle(out_path = 'F:\\cycle.png'):    '''画圆圈'''    img = Image.new("RGBA",(500,500),(255,0,255,255))    draw = ImageDraw.Draw(img)    draw.ellipse((50,50,450,450),fill=True,outline='red',width=5)    img.save(out_path)
复制代码

用 python 生成圆形图片

首先需要一个正方形图片,其次根据三角函数获取圆心到各个圆边的坐标点最后裁减图片报存图片成圆形


具体完整代码如下:


def genCircle():    img = Image.open('F:\\cyc.png').convert("RGBA")    size = img.size     # 因为是要圆形,所以需要正方形的图片     img_r = min(size[0], size[1])     if size[0] != size[1]:         #如果图片不是正方形,需要裁减        img = img.resize((img_r, img_r), Image.ANTIALIAS)     cycle_r = 300    imb = Image.new("RGBA",(cycle_r * 2,cycle_r * 2),(255,0,255,0))    img_a = img.load()    img_b = imb.load()    r = float(img_r/2) #圆心横坐标    for i in range(img_r):         for j in range(img_r):             lx = abs(i-r) #到圆心距离的横坐标             ly = abs(j-r) #到圆心距离的纵坐标             l = (pow(lx,2) + pow(ly,2)) ** 0.5 # 三角函数 半径                if l < cycle_r:                 img_b[i-(r-cycle_r),j-(r-cycle_r)] = img_a[i,j]                            imb.save("F://test_circle.png") 
复制代码

使用 python 在图片上添加文字

可以实现在透明图片上添加文字
复制代码


  • 在图片上添加横排文字


需要准备好字体文件和图片文件;具体参考以下代码注释:


'''参数:xy-文字的左上角。text-要绘制的文本。如果包含任何换行符,则文本将传递到multiline_text()fill-用于文本的颜色。font-一个ImageFont实例。spacing-如果文本传递到multiline_text()换行文本,则行之间的像素数。align-如果文本已传递到multiline_text(),“left”,“center”或“right”。'''def genTitle(text=None,size=(800,500),font_path=None,font_size=60,out_path=None):    img = Image.new("RGBA",size,(255,255,255,100))    draw = ImageDraw.Draw(img)    font = ImageFont.truetype(font_path,font_size)    txtsize_1 = draw.textsize(text,font=font,spacing=10)    draw.text(((size[0]-txtsize_1[0])/2,(size[1]-txtsize_1[1])/2),text,fill='red',font=font,spacing=10)    img.save(out_path)
复制代码


  • 在图片上添加竖排文字


竖排文字主要是计算每个文字的坐标,按照一般写文字方式,写入到指定坐标,既可以实现竖排文字的呈现方式;


具体代码如下:



def genVtitle(): '''竖排文字''' text = '明月几时有 \n 把酒问青天' size = (200,600) font_size = 50 out_path = 'F:\\cyc.png' font_path = r'C:\Users\**\Fonts\egular.ttf' img = Image.new("RGBA",size,(255,255,255,10)) draw = ImageDraw.Draw(img) font = ImageFont.truetype(font_path,font_size) x = 0 y = 0 r_space = 10 #行距 w_space = 10 #字距 for i,s in enumerate(text): if i == 0: w,h = font.getsize(s) if s=='\n' or s==',': x = x + w + r_space y = 0 continue else: y = y + h + w_space draw.text((x+50,y+50),s,fill='red',font=font) img.save(out_path)
复制代码


发布于: 11 分钟前阅读数: 5
用户头像

还未添加个人签名 2022-07-26 加入

还未添加个人简介

评论

发布
暂无评论
使用python生成文字图片,画圆圈 ,生成圆形图片_10月月更_技能实验室_InfoQ写作社区