[英]PIL ImageDraw.Draw() doesn't work when used in a function
我制作了一個將 Mandelbrot 集渲染為圖像的程序。 我將 draw.point() 方法放在 function 中,但它似乎並沒有實際繪制最終圖像,但如果我將 im.save() 放在 function 中,它確實有效。 完整代碼實際上使用多處理並渲染圖像 CineBench 風格,這就是為什么我不能將 im.save() 放在 function 中,或從中拉出 draw.point()。 還有其他方法可以解決問題嗎?
from PIL import Image, ImageDraw
im = Image.new("RGB", (hor_res, vert_res), (0, 0, 0))
draw = ImageDraw.Draw(im)
def mandelbrot():
# mandelbrot code
def box_renderer(x_start: int, x_end: int, y_start: int, y_end: int):
for y in range(y_start, y_end):
for x in range(x_start, x_end):
colour = 255 - int(255*mandelbrot(x, y)/iterations)
draw.point([x, y], (0, 0, colour))
if __name__ == "__main__":
box_renderer(args)
im.save("mandelbrot.png", "PNG")
這不是整個程序,但希望足以理解
我不確定您的示例代碼是否具有代表性,因為這個版本工作正常:
from PIL import Image, ImageDraw
hor_res, vert_res = 200, 200
im = Image.new("RGB", (hor_res, vert_res), (255, 0, 0))
draw = ImageDraw.Draw(im)
def box_renderer(x_start: int, x_end: int, y_start: int, y_end: int):
for y in range(y_start, y_end):
for x in range(x_start, x_end):
colour = 128
draw.point([x, y], (0, 0, colour))
if __name__ == "__main__":
box_renderer(x_start=50,x_end=100,y_start=20,y_end=180)
im.save("mandelbrot.png", "PNG")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.