小编rad*_*ere的帖子

PIL 将文本添加到 gif 帧会增加图片的噪点

我正在使用 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 gif animated-gif python-imaging-library

1
推荐指数
1
解决办法
1439
查看次数

如何获取一个类的所有实例

我正在学习 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)

python set instance

-1
推荐指数
1
解决办法
2448
查看次数