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
Python 在网格中写入包含多个图像的文件_Python_Image_Grid - Fatal编程技术网

Python 在网格中写入包含多个图像的文件

Python 在网格中写入包含多个图像的文件,python,image,grid,Python,Image,Grid,我正在尝试在10x10网格中编写一个包含多个图像(100)的文件。我使用3进行迭代,以: -打开文件 -设置坐标(i,j) 问题是,当我查看我的文件时,我只能多次看到最后一张图像。可能每次程序进入for循环时都会覆盖这些文件。直到现在我还找不到解决办法 代码是: import Image from os import listdir from os.path import isfile, join files = [ f for f in listdir("/m

我正在尝试在10x10网格中编写一个包含多个图像(100)的文件。我使用3进行迭代,以:

-打开文件 -设置坐标(i,j)

问题是,当我查看我的文件时,我只能多次看到最后一张图像。可能每次程序进入for循环时都会覆盖这些文件。直到现在我还找不到解决办法

代码是:

    import Image

    from os import listdir
    from os.path import isfile, join
    files = [ f for f in listdir("/mnt/hgfs/Documents/Notebooks/test1/") if isfile(join("/mnt/hgfs/Documents/Notebooks/test1/", f)) ]

    new_im = Image.new('RGB', (3000,3000))

    for i in xrange(0,3000,300):
        for j in xrange(0,3000,300):
            for ima in files:
                #paste the image at location i,j:
                im = Image.open(ima)
                im.thumbnail((300,300))
                new_im.paste(im, (i,j))

    new_im.save("hola.png")

谢谢

这里有一个简单的bug修复。循环只需要两个,而不是三个

import Image

from os import listdir
from os.path import isfile, join
files = [ f for f in listdir("/mnt/hgfs/Documents/Notebooks/test1/") if isfile(join("/mnt/hgfs/Documents/Notebooks/test1/", f)) ]

new_im = Image.new('RGB', (3000,3000))

index = 0
for i in xrange(0,3000,300):
    for j in xrange(0,3000,300):
        im = Image.open(files[index])
        im.thumbnail((300,300))
        new_im.paste(im, (i,j))
        index += 1

new_im.save("hola.png")

这是Python3代码,用于使用matplotlib从包含图像的任何目录生成图像的squre网格文件。 方形大小通过现有图像的计数动态计算

导入数学
导入操作系统
将matplotlib.pyplot作为plt导入
#配置:
images_dir='./您的_dir_with_images'
结果网格文件名='。/grid.jpg'
结果_figsize_分辨率=40#1=100px
images\u list=os.listdir(images\u dir)
图像计数=len(图像列表)
打印('图像:',图像列表)
打印('图像计数:',图像计数)
#计算网格大小:
网格大小=math.ceil(math.sqrt(图像计数))
#创建plt图:
图,轴=plt.子图(网格大小,网格大小,figsize=(结果分辨率,结果分辨率))
当前文件编号=0
对于图像列表中的图像文件名:
x\u位置=当前\u文件\u编号%grid\u大小
y\u位置=当前文件号//网格大小
plt_image=plt.imread(图像目录+'/'+图像列表[当前文件编号])
轴[x\U位置,y\U位置].imshow(plt\U图像)
打印((当前文件编号+1),“/”,图像计数,:”,图像文件名)
当前文件号+=1
plt.子批次调整(左=0.0,右=1.0,下=0.0,上=1.0)
plt.savefig(结果\网格\文件名)