【发布时间】:2019-01-18 22:49:41
【问题描述】:
我制作了一个程序来过滤只有 20 种颜色的图像,我想保存程序正在制作的过程直到它完成,我已经成功保存了图像但是需要很多时间。
假设用户给了我一张 800x600 的图像,我的程序大约需要 15 秒或更短的时间来完成图像编辑,但如果我在每一步后保存,则大约需要 10 分钟。因为每次保存后,程序都在等待文件准备好,尽管它不需要图像,它可以继续前进并让 winodws 处理它。
我试过用线程来做,我得到了相同的结果,每张图像大约 1 秒..
from PIL import Image
from PIL import ImageGrab
im = Image.open('braw.png') # Can be many different formats.
rgb_im = im.convert('RGB')
pix = rgb_im.load()
height, width = im.size
image = ImageGrab.grab()
path = os.getcwd()
def read_color(height,width, COLORS):
for x in range(height):
for y in range(width):
r,g,b = rgb_im.getpixel((x,y))
color = closest_color(r, g, b, COLORS)
back_work(color,x,y)
save_frame(x, '/frames')
def save_frame(x, location):
try:
rgb_im.save(path + location+'/ark_ai' + str(x) + '.jpeg')
except OSError:
sleep(0.5)
def back_work(color, x, y):
pix[x,y] = color
我预计程序会在每次循环后继续保存图像,即使它没有完成,有没有更快的方法来做到这一点,我不知道?
【问题讨论】:
-
请问
closest_color()的代码在哪里? -
另外,减少颜色然后另存为JPEG是没有意义的,这将再次增加颜色数量!