一、Pillow库简介

PIL(Python Image Library)是python的第三方图像处理库,其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了,但是PIL只支持到python 2.7 版本。在python 3.x 中,在PIL基础上改进的Pillow库,解决了PIL不兼容setuptools,更新慢等问题。

官方文档(英文):

https://pillow.readthedocs.io/en/stable/

网友翻译(中文):

https://pillow-cn.readthedocs.io/zh_CN/latest/

二、进入正题

从Pillow中导入Image,ImageDraw和ImageFont模块,注意在导入时仍然是PIL而不是Pillow

from PIL import Image,ImageDraw,ImageFont

创建一张3x8位像素、分辨率为500x500的白色图片Test,并创建可用于在此图像中绘制的对象Draw。

Test = Image.new(mode = 'RGB',size = (500,500),color = 'white')
Draw = ImageDraw.Draw(Test)

计算渐变步长,这里我们从bg_1 = (254,1,254)竖直方向渐变到bg_2 = (0,245,246)并判断修改每一行像素的颜色。RGB为0-255之间的整数,需对计算出来的颜色取整(不建议用int)。

step_r = (bg_2[0] - bg_1[0]) / 500
step_g = (bg_2[1] - bg_1[1]) / 500
step_b = (bg_2[2] - bg_1[2]) / 500
for y in range(0,501):bg_r = round(bg_1[0] + step_r * y)bg_g = round(bg_1[1] + step_g * y)bg_b = round(bg_1[2] + step_b * y)for x in range(0,500):Draw.point((x,y),fill = (bg_r,bg_g,bg_b))

到这里我们就能通过Test.show()看到一张渐变图片

此类双色线性渐变,若要从其他方向角度渐变,只需要计算出足够的分辨率再旋转裁剪。对于多色非线性渐变还有待作者研究。

在图片上添加文字

创建一个字体对象fnt,ImageFont.truetype有五个参数(font = Nonesize = 10index = 0encoding =''layout_engine = None ),我们只用其中两个 font字体格式 = 字体文件目录,size字体大小 = x 磅,这里我们用windows目录下的字体(黑体) 。最后通过ImageDraw.text(xytextfill = Nonefont = Noneanchor = Nonespacing = 0align =“left”direction = Nonefeatures = Nonelanguage = None )绘制到指定位置,xy为字体左上角在图片的位置(0,0为图片左上角),text为需要绘制的文本,fill为字体填充颜色,font为之前创立的实例fnt。

fnt = ImageFont.truetype(font = '‪C:\Windows\Fonts\simhei.ttf',size = 120)
Draw.text(xy = (40,198),text = 'Randint',font = fnt,fill = 'white')

附录:完整源码

from PIL import Image,ImageDraw,ImageFontwidth = 500
height = 500        #设置分辨率
font_size = 120        #字体大小
font_style  = '‪C:\Windows\Fonts\simhei.ttf'        #字体格式bg_1 = (254,1,254)
bg_2 = (0,245,246)#新建一张空白图片
randint = Image.new(mode = 'RGB',size = (width,height),color = bg_1)
draw = ImageDraw.Draw(randint)
#设置步长
step_r = (bg_2[0] - bg_1[0]) / height
step_g = (bg_2[1] - bg_1[1]) / height
step_b = (bg_2[2] - bg_1[2]) / heightfor y in range(0,height):bg_r = round(bg_1[0] + step_r * y)bg_g = round(bg_1[1] + step_g * y)bg_b = round(bg_1[2] + step_b * y)for x in range(0,width):draw.point((x,y),fill = (bg_r,bg_g,bg_b))#将字体绘制到图片上
fnt = ImageFont.truetype(font = font_style,size = font_size)
[fnt_width,fnt_height] = draw.textsize('Randint',font = fnt)
fnt_x = (width - fnt_width) / 2
fnt_y = (height - fnt_height) / 2
draw.text((fnt_x,fnt_y),text = 'Randint',font = fnt,fill = 'white')randint.show()
randint.save('randint.png')

如何用Pillow库制作渐变色图片并添加文字。相关推荐

  1. php 利用GD库在制定图片上添加文字

    我们可以利用php的gd库扩展来对我们的图片进行处理,例如是生成缩略图,对图片进行裁切,和本章将说的在图片添加文字. 1.首先我们需要接受到我们需要的文字:$key = $_GET['key'];具体 ...

  2. php 图片上加文字,php使用GD库实现图片上添加文字的方法(代码)

    本篇文章给大家带来的内容是关于php使用GD库实现图片上添加文字的方法(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 我们可以利用php的gd库扩展来对我们的图片进行处理,例 ...

  3. python怎么加图片_怎么在图片旁边加文字 python如何在图片上添加文字 - 励志 - 52资讯网...

    Python在图片上添加文字的两种方法:OpenCV和PIL 一.OpenCV方法 1.安装cv2 pip install opencv-python 2.利用putText方法来实现在图片的指定位置 ...

  4. html图片加文字批量处理,图片批量加水印工具,图片批量添加文字|图片同时添加文字或图片水印...

    一般在网上下载的图片都会自动带有相应网站的文字或是图片水印,虽然可能在使用图片素材的时候,图片上的水印会在一定程度上影响美观,但是水印是对于版权或者是原创的一个保护,图片水印不仅是可以保护别人的原创图 ...

  5. 【PHP实例】使用GD2函数在图片上添加文字

    实例说明 PHP 中的 GD 库支持中文,但必须要以 UTF-8 格式的参数来进行传递.如果使用imageString () 函数直接绘制中文字符串,就会显示乱码,这是因为GD2 对中文只能接收UTF ...

  6. python 制作电子相册 视频_制作电子相册时如何添加文字?用什么软件?

    我们平时在分享电子相册时,有时候想要在照片上配上文字,就希望通过视频编辑软件来完成这个步骤,希望大家在看到你制作的电子相册时,能够更加有带入看,这样的电子相册更有特色,今天我们就一起来学习制作电子相册 ...

  7. Python之PIL之绘图:基于Python的PIL库绘制各种图形、添加文字等

    Python之PIL之绘图:基于Python的PIL库绘制各种图形.添加文字等 目录 一.绘制各种形状各种案例 1.绘制矩形 2.绘制圆形.弧线形

  8. java在图片下方写文字_Java画图给图片底部添加文字标题

    Java画图 给图片底部添加文字标题 需求给图片底部添加文字编号 import java.awt.Color; import java.awt.Font; import java.awt.Graphi ...

  9. 在图片上添加文字并生成图片

    在图片上添加文字并生成图片 开发工具与关键技术:Visual Studio 2015 作者:李德新 撰写时间:2019年6月04日 在我们的日常生活中,我们经常能看到各样格式的表单,而且有时候我们还要 ...

最新文章

  1. 只需4秒,这个算法就能鉴别你的LV是真是假
  2. 汇总|3D人脸重建算法
  3. JVM汇总--类加载/收集器
  4. 启明云端分享|ESP32/ESP8266 烧录器 USB-TTL转接板开发工具ESP-T01的使用教程,视频可参考B站
  5. 今年跳槽可以再等等。
  6. ios html gif 显示,iOS中gif图的显示方法示例
  7. 中文编程语言_文言文编程语言,让你明白什么叫“中文比英语还难”。
  8. Spark Streaming原理简析
  9. mysql cast numeric,mysql decimal、
  10. windows下注册和取消pg服务的命令
  11. 安装xmanager linux系统,安装Xmanager登陆Linux操作系统[图文]
  12. Android的 EditText的inputType类型
  13. Fiddler 快速模拟 mock
  14. tomcat登录账户配置
  15. PAT乙级刷题感想及踩坑总结
  16. C#实现微信网页授权
  17. 八、JavaScript
  18. Axure基本使用(一)
  19. js逆向学习路线指南
  20. 基于python3+opencv3遥感影像的湖泊边界提取

热门文章

  1. 淘宝获得商品销量详情API调用展示
  2. 第123章 查询关键字 - SoapBodyUse
  3. codeforces 546 E. Soldier and Traveling(网络流+路径输出)
  4. 光纤到户FTTH施工要求
  5. 带你深入理解图灵机--什么是人工智能AI?
  6. 微PE工具箱安装系统
  7. AUTOJS新手各种脚本演示-陆续更新
  8. 度宇宙、网易星球、爱得钻……这些大的区块链项目能否借机重生?
  9. LeetCode 145:二叉树的后序遍历
  10. 【TypeScript】深入学习TypeScript对象类型