Home > other >  Combine/Merge every x images together with title of each pict (linux)
Combine/Merge every x images together with title of each pict (linux)

Time:08-27

I have some folders containing many jpg pictures (number depends on the folder)

I would like for instance to combine every 4 pict** together with the title of the image (see pict below).

(In case there is not exactly 4 image on the last sequence, I should get the number of left picture such as 3 2 or 1)

**Ideally I could change that number to other numbers like 5 6 10 (the number I chose would depend on the context) and I could chose the number of columns (I showed 2 column in my example below)

How can i perform this on Linux command or any Linux free/open-source software?

outcome

CodePudding user response:

As I did not find what I want I created my own python code to solve this (it's probably not the most perfects script of the century but it works)

"""
Prints a collage according to desired number of column and rows with title of file
Instruction
1. Put all jpg picture in same folder [tested sucessfully on 12mb per pict]
2. select desired columns in  NO_COL
3. select desired rowsin in NO_ROW
4. run the script which will output the collage with <cur_date>_export.png files
"""

#import libraries
import time
import os
import imageio as iio
from matplotlib import pyplot as plt


def render_collage(pict_file_name_list):
    """ create one collage """
    fig = plt.figure(figsize=(40, 28)) #change if needed
    cnt = 1
    for cur_img_name in pict_file_name_list:
        img_var = iio.imread(cur_img_name)
        fig.add_subplot(NO_COL, NO_ROW, cnt)
        plt.imshow(img_var)
        plt.axis('off')
        plt.title(cur_img_name, fontsize = 30) #change if needed
        cnt = cnt   1
    cur_date = time.strftime("%Y-%m-%d--%H-%M-%s")
    fig.savefig(cur_date '_export.png')



NO_COL = 3
NO_ROW = 3
NBR_IMG_COLLAGE = NO_COL * NO_ROW

img_list_name = [elem for elem in os.listdir() if 'jpg' in elem] #keep only file having .jpg


while len(img_list_name) >= 1:
    sub_list = img_list_name[:NBR_IMG_COLLAGE]
    render_collage(sub_list)
    del img_list_name[:NBR_IMG_COLLAGE]
    
  • Related