簡體   English   中英

PIL ImageDraw.Draw() 在 function 中使用時不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM