Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种在python上保存图像文件的快速方法?_Python_Image Processing - Fatal编程技术网

有没有一种在python上保存图像文件的快速方法?

有没有一种在python上保存图像文件的快速方法?,python,image-processing,Python,Image Processing,我制作了一个程序来过滤只有20种颜色的图像,我想保存程序正在制作的过程,直到它完成,我已经成功地保存了图像,但是这需要很多时间 假设用户给我一张800x600的图像,我的程序完成图像编辑大约需要15秒或更短的时间,但如果我在每一步后都保存,大约需要10分钟。。这是因为在每次保存之后,程序都在等待文件准备就绪,尽管它不需要可以移动的映像,并让winodws处理它 我试着用线程来实现它,我得到了相同的结果,每个图像大约1s from PIL import Image from PIL import

我制作了一个程序来过滤只有20种颜色的图像,我想保存程序正在制作的过程,直到它完成,我已经成功地保存了图像,但是这需要很多时间

假设用户给我一张800x600的图像,我的程序完成图像编辑大约需要15秒或更短的时间,但如果我在每一步后都保存,大约需要10分钟。。这是因为在每次保存之后,程序都在等待文件准备就绪,尽管它不需要可以移动的映像,并让winodws处理它

我试着用线程来实现它,我得到了相同的结果,每个图像大约1s

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是没有意义的,这将再次增加颜色的数量!