Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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
Image 使用Pygame向下缩放图像_Image_Pygame_Corrupt - Fatal编程技术网

Image 使用Pygame向下缩放图像

Image 使用Pygame向下缩放图像,image,pygame,corrupt,Image,Pygame,Corrupt,问题 我试图缩小非常大的图像的数量,以减少编辑它们所需的计算时间,所以我创建了一个小python脚本,并使用pygame缩小了它们。脚本获取了一个输入目录,缩小了每个图像的比例,并将它们保存在输出目录中,保持目录结构。这一切都很顺利,尽管进展缓慢。所以我决定运行程序更多次,以利用更多的内核。我修改了原始代码以跳过文件,因此我可以运行更多文件(例如,一个程序将处理每个偶数图像,另一个程序将处理每个奇数图像) 事实证明,这只在大多数情况下有效。我曾经以这种方式同时运行过3个程序,大约5%的图像被破坏

问题

我试图缩小非常大的图像的数量,以减少编辑它们所需的计算时间,所以我创建了一个小python脚本,并使用pygame缩小了它们。脚本获取了一个输入目录,缩小了每个图像的比例,并将它们保存在输出目录中,保持目录结构。这一切都很顺利,尽管进展缓慢。所以我决定运行程序更多次,以利用更多的内核。我修改了原始代码以跳过文件,因此我可以运行更多文件(例如,一个程序将处理每个偶数图像,另一个程序将处理每个奇数图像)

事实证明,这只在大多数情况下有效。我曾经以这种方式同时运行过3个程序,大约5%的图像被破坏(图像的结尾缺失,图像被其他部分替换),我不知道为什么。你知道我能做什么吗

详细信息

可以在此处找到正在运行的脚本。(脚本需要两行,每行一个数字,因此它可以执行每个(A*N+B)文件。)。该脚本使用python 3.2.3和pygame 1.9.2运行

图像分辨率约为2700 x 2700或2700 x 5400,较短侧的目标尺寸为600像素(600x600和600x1200)。输入文件夹(仅包含图像)的容量约为40 GB


路径可能会有问题,因为目录有Unicode文件名,尽管我已采取措施防止Unicode字符出现问题。

执行并发的方式可能会引入您描述的错误。您如何在
A*N+B
计算中选择
A
N
B
?如果您编写这个程序a)使用线程,或b)作为工作/队列模型,您可能会看得更清楚(一个主程序读取文件系统,将文件名分派到一个队列,工作程序从队列中读取文件名,进行转换,然后重复,直到队列为空。对于大规模图像大小调整,我会选择@bitgarden I convert file if
files\u done%a==B
(a和B从输入读取),同时使用
os.walk()
进行迭代。我修改了脚本,列出了它要转换的所有文件,并比较了输出-没有任何文件名冲突。至于其他解决方案,我不太确定如何实现它们。