在接触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()
总结:因为对图像库的不熟悉,耗费了不少查阅资料的时间,希望后面能够更加细心吧