Как объединить несколько изображений из последовательности, используя любой язык программирования? - PullRequest
0 голосов
/ 16 апреля 2019

Я настраиваю вики для игры, и мне нужно поместить 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

1 Ответ

0 голосов
/ 16 апреля 2019

Библиотека PIL не поддерживается . «Подушка» также идентифицируется как PIL, проверьте, правильно ли она установлена.

Как уже упоминалось в комментариях, ваш вопрос не совсем понятен.Тем не менее, похоже, что вы пытаетесь написать что-то вроде этого:

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) также будет работать нормально.

...