我想在其中绘制一个矩形和一个文本,这是我的代码的一部分,它有点混淆:
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
from PIL import ImageEnhance
source_img = Image.open(file_name).convert("RGB")
img1 = Image.new("RGBA", img.size, (0,0,0,0))
draw1 = ImageDraw.Draw(watermark, "RGBA")
draw1.rectangle(((0, 00), (100, 100)), fill="black")
img_rectangle = Image.composite(img1, source_img, img1)
draw2 = ImageDraw.Draw(img1, "RGBA")
draw2.text((20, 70), "something123", font=ImageFont.truetype("font_path123"))
Image.composite(img1, source_img, img1).save(out_file, "JPEG")
Run Code Online (Sandbox Code Playgroud)
这将它们两者绘制,但它们是分开的:文本在矩形下面.而我希望在矩形内绘制文本.我怎样才能做到这一点?如果我一定撰写他们还是什么?
我有点困惑,仍然没有找到明确的答案:我应该将标签命名为“label1”还是下划线“_label1”?什么是最流行和最知名的方式?如果我没记错的话,我什至见过一个带有点“.label1”的。
同样的问题也适用于函数:“function1”还是“_function1”?
我正在尝试创建一个图像并用半透明的黑色填充它:
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
from PIL import ImageEnhance
fnt = create_font()
# my background rectangle
img1 = Image.new("RGBA", 100, 100, color=(0, 0, 0, 230)) #RGBA
dr1 = ImageDraw.Draw(img1)
dr1.text((5, 5), "some text", font=fnt)
# my source image
my_img.paste(dr1, (10, 10))
my_img.save(out_file, "JPEG")
Run Code Online (Sandbox Code Playgroud)
但它忽略了透明度级别“230”。如果我将其更改为“0”或任何其他数字,“dr1”矩形的透明度级别保持不变 - 它是全黑的。
更新:
我有 jpeg 来源my_img。我想在其带有文本的部分放置一个半透明矩形img1。我怎样才能做到这一点?我怎样才能变得img1更加透明?