Python 图像处理库 Pillow库ImageDraw fill参数传递颜色问题

在接触Pillow库的时候遇到了一个比较粗心的问题
我个人觉得这也算是个坑吧
花了半天时间找解决方法 官方文档也翻了好几遍
最后终于解决了这个问题 希望帮助到别人吧

我们在使用Pillow库的时候ImageDraw类是我们经常用到的
可以用这个类来绘制不同的图形和线条
但是在使用过程中基本上每个函数函数方法几乎都会用到一个fill参数

fill参数主要是用于赋值传递颜色的
官方文档说是支持十六进制颜色和RGB以及英文颜色
但是不管怎样赋值传参 fill=‘red’ fill=‘blue’ 都无济于事
官方文档的示例也会造成读取的图像花屏
后来无意间察觉那是因为读取的图像没有进行转换造成的

只需要添加一行转换就可以了

image.convert('RGBA')

这个是没有转换之前的代码

import os
import json
from PIL import Image,ImageDraw


image = Image.open('E:\\new_atlas\\test\\test\\2_0.png')  # 加载PNG
px = 45.05
py = 95.2
draw = ImageDraw.Draw(image) #实例化一个对象
draw.line([0, py, image.width, py], fill='red')
draw.line([px, 0, px, image.height], fill='red')
temp_img = image.transpose(Image.FLIP_LEFT_RIGHT)
image.save('E:\\new_atlas\\test\\test.png','png')
temp_img.show()
image.show()

没有转换前的图片预览
这个是转换之后的代码

import os
import json
from PIL import Image,ImageDraw


image = Image.open('E:\\new_atlas\\test\\test\\2_0.png')  # 加载PNG
px = 45.05
py = 95.2
image = image.convert('RGBA')
draw = ImageDraw.Draw(image) #实例化一个对象
draw.line([0, py, image.width, py], fill='red')
draw.line([px, 0, px, image.height], fill='red')
temp_img = image.transpose(Image.FLIP_LEFT_RIGHT)
image.save('E:\\new_atlas\\test\\test.png','png')
temp_img.show()
image.show()

转换之后的图片

总结:因为对图像库的不熟悉,耗费了不少查阅资料的时间,希望后面能够更加细心吧

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值