我正在使用 PIL 创建一个简单的 GIF 动画:
from PIL import Image, ImageDraw, ImageFont
images = []
for x, i in enumerate(range(10)):
image = Image.new(mode="RGB", size=(320, 60), color="orange")
draw = ImageDraw.Draw(image)
fnt = ImageFont.truetype('font.ttf', size=10)
draw.text((10, 10), ("%s" % x), fill=(0, 0, 255), font=fnt)
images.append(image)
images[0].save("result/pil.gif", save_all=True, append_images=images[1:], duration=1000, loop=0, format="GIF")
Run Code Online (Sandbox Code Playgroud)
问题是,每当我使用 Draw.text 时,图像的背景就会出现某种白色:
我发现一些信息,我必须使用第一帧中的 getpalette 和所有其他帧的 putpalette ,如下所示:
for x, i in enumerate(range(10)):
image = Image.new(mode="RGB", size=(320, 60), color="orange")
if x == 0:
palette = image.getpalette()
else:
image.putpalette(palette)
Run Code Online (Sandbox Code Playgroud)
但它只是给了我:ValueError: illegal image …
我正在学习 Python 作为初学者,我想创建一个类Person。在构造函数中,我想将我创建的每个实例放入一个名为“实例”的集合中。然后我希望instance() 方法返回所有实例。我怎样才能做到这一点?
class Person:
# Type annotations
__first_name: str
__last_name: str
instances: set
# Initializing variables
no_of_persons = 0
instances = set()
def __init__(self, firstname="unknown", lastname="unknown"):
self.__first_name = firstname
self.__last_name = lastname
Person.no_of_persons += 1
Person.instances.add() ## Here I have problems
@property
def first_name(self):
return self.__first_name
@first_name.setter
def first_name(self, firstname):
self.__first_name = firstname
@property
def last_name(self, ):
return self.__last_name
@last_name.setter
def last_name(self, lastname):
self.__last_name = lastname
def getFullName(self):
""" Returns a tuple of the firstname and …Run Code Online (Sandbox Code Playgroud)