有没有一种在python上保存图像文件的快速方法?
我制作了一个程序来过滤只有20种颜色的图像,我想保存程序正在制作的过程,直到它完成,我已经成功地保存了图像,但是这需要很多时间 假设用户给我一张800x600的图像,我的程序完成图像编辑大约需要15秒或更短的时间,但如果我在每一步后都保存,大约需要10分钟。。这是因为在每次保存之后,程序都在等待文件准备就绪,尽管它不需要可以移动的映像,并让winodws处理它 我试着用线程来实现它,我得到了相同的结果,每个图像大约1s有没有一种在python上保存图像文件的快速方法?,python,image-processing,Python,Image Processing,我制作了一个程序来过滤只有20种颜色的图像,我想保存程序正在制作的过程,直到它完成,我已经成功地保存了图像,但是这需要很多时间 假设用户给我一张800x600的图像,我的程序完成图像编辑大约需要15秒或更短的时间,但如果我在每一步后都保存,大约需要10分钟。。这是因为在每次保存之后,程序都在等待文件准备就绪,尽管它不需要可以移动的映像,并让winodws处理它 我试着用线程来实现它,我得到了相同的结果,每个图像大约1s from PIL import Image from PIL import
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
我希望程序在每次循环后都能继续保存图像,即使没有保存,有没有一种更快的方法让我不知道 看起来每次更新一个像素时都在保存,这意味着您保存了480000个图像,总共有691 GB写入磁盘。当然,并不是所有这些都会一次保存到硬盘上,因为您正在覆盖99%的文件。尽管如此,这需要大量的文件I/O,而要加快速度,您也无能为力 为什么不在每一列更新后,而不是每一个像素更新后再保存呢?这将使你的储蓄减少600倍。并且输出应该是相同的,因为您只是跳过保存无论如何都会被覆盖的帧
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')
看起来每次更新一个像素时都在保存,这意味着您保存了480000个图像,总共有691GB写入磁盘。当然,并不是所有这些都会一次保存到硬盘上,因为您正在覆盖99%的文件。尽管如此,这需要大量的文件I/O,而要加快速度,您也无能为力 为什么不在每一列更新后,而不是每一个像素更新后再保存呢?这将使你的储蓄减少600倍。并且输出应该是相同的,因为您只是跳过保存无论如何都会被覆盖的帧
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')
非常感谢。现在快多了:)谢谢!现在快多了:)请问
最近的颜色()的代码在哪里?另外,减少颜色然后另存为JPEG将再次增加颜色的数量也没有意义!请问最近的颜色()的代码在哪里?另外,减少颜色然后另存为JPEG是没有意义的,这将再次增加颜色的数量!