def __init__(self, text, fsize=23, color="#0099ff", shadow=False, skew=None, font='NotoSans-Bold'): utils.pil_check() from PIL import Image, ImageFont, ImageDraw self.text = text self.color = grapefruit.Color.NewFromHtml(color) self.font = ImageFont.truetype(resolve_font(font), fsize) skew = skew or 0 size = tuple([n + 3 + skew for n in self.font.getsize(self.text)]) self.img = Image.new("RGBA", size, (0, 0, 0, 0)) cvs = ImageDraw.Draw(self.img) if shadow: cvs.text((2 + skew, 2), self.text, font=self.font, fill=(150, 150, 150, 150)) cvs.text((1 + skew, 1), self.text, font=self.font, fill=self.color.html) if skew: self.img = self.img.transform( size, Image.AFFINE, (1.0, 0.1 * skew, -1.0 * skew, 0.0, 1.0, 0.0)) self.resize(None)
def __init__(self, path, width=None): utils.pil_check() from PIL import Image as PillsPillsPills self.img = PillsPillsPills.open(path) # when reading pixels, gifs will return colors corresponding # to a palette if we don't do this :\ self.img = self.img.convert("RGBA") self.resize(width)