如何使用任何编程语言组合来自序列的多个图像?

Posted

技术标签:

【中文标题】如何使用任何编程语言组合来自序列的多个图像?【英文标题】:How to combine multiples images from a sequence, using any programming language? 【发布时间】:2019-09-06 18:09:49 【问题描述】:

我正在为游戏设置 wiki,我需要放置 GIF 以使网站更易于理解。但我有一个问题。为了制作我需要合并一些图像的 GIF,我手动逐个图像地完成,这很烦人。那么我可以使用什么语言来实现自动化呢?

我用python尝试了一些代码,但没有任何成功。我可以让它工作的唯一方法是使用 Photoshop 来组合这些图像。

我试过这段代码:

import numpy as np
from PIL import Image
images_list = []
for i in range(1,4): #insert last number of photo
images_list.append(str(i)+'.PNG')
count = 1;

directory = "C:/Users/Windows/Desktop/BloodStoneSprites/sprites1"  
#change to directory where your photos are
ext = ".PNG"
new_file_name = "vimage-"
new_directory = "C:/Users/Windows/Desktop/BloodStoneSprites/Uniao" # 
change to path of new directory where you want your photos to be saved


for j in range(0,len(images_list),2):
name = new_file_name + str(j) + ext
two_images_list = [images_list[j],images_list[j+1]]
imgs = [ Image.open(i) for i in two_images_list ]
min_img_shape = sorted( [(np.sum(i.size), i.size ) for i in imgs])[0][1]
imgs_comb = np.hstack( (np.asarray( i.resize(min_img_shape) ) for i in 
imgs ) )
imgs_comb = Image.fromarray( imgs_comb)
imgs_comb.save(new_directory+'/'+name )
count +=1

这里有一些我需要合并的图片: https://imgur.com/a/BBNGjuf

【问题讨论】:

您的代码不是有效的python。运行代码时发生了什么?什么是预期的输出?请出示minimal reproducible example 对不起我的英语不好,我在手机里,校正器太可怕了。但是,当我启动代码时,会出现这样的: Traceback (last recent call last): File "C:\Users\Windows\Desktop\BloodStoneSprites\mergin.py", line 2, in from PIL import Image ModuleNotFoundError: No名为“PIL”的模块。并且输出什么也不显示。 【参考方案1】:

The PIL library hasn't been maintained。 "Pillow" 也标识为 PIL,请检查它是否已正确安装。

正如 cmets 中所述,您的问题并不完全清楚。也就是说,您似乎正在尝试编写如下内容:

import numpy as np
from PIL import Image

images_names = [
    "C:/Users/Windows/Desktop/BloodStoneSprites/sprites1/0!s.PNG".format(i)
    for i in range(1,4)
  ]
images = [Image.open(file_name) for file_name in images_names]

new_name_scheme = "C:/Users/Windows/Desktop/BloodStoneSprites/Uniao/vimage-0!s.PNG"

for j in range(0,len(images),2):
  two_images_list = [images[j],images[j+1]]
  min_img_shape = sorted( [(np.sum(i.size), i.size ) for i in two_images_list] )[0][1]
  imgs_comb = Image.fromarray(
    np.hstack((
      np.asarray(i.resize(min_img_shape))
      for i in two_images_list
    )))
  imgs_comb.save(new_name_scheme.format(j))

我不保证上述内容会实际运行;你需要努力。 最重要的更改是删除或展平大量变量,并添加 for 循环工作所需的缩进。 您会注意到我使用的是'str'.format(arg) 语法。 'str' % (arg) 也可以正常工作。

【讨论】:

以上是关于如何使用任何编程语言组合来自序列的多个图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何在多个图像视图中设置多个图像

如何以编程方式完成作业后停止cron作业

LINQ-进行数据转换

以编程方式将多个 SQL 列组合并存储到一个列中

如何在QML项目中显示本地目录中的多个图像?

在 PHP 中以编程方式组合图像