-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMergedImages.pl
106 lines (80 loc) · 3.73 KB
/
MergedImages.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# Perl5-5.26.2. Ukraine. (C) Demidov S.V.
# Пример вызова: $ perl MergedImages.pl
# Скрипт объединяет изображения.
# Используется ImageMagick!
# Для объявления переменных.
use strict;
# В случае возникновений каких-либо проблем нужно остановить работу скрипта.
use warnings FATAL => 'all';
my $path_read; # Путь к кадрам (чтение).
my $path_save; # Путь к кадрам (запись).
my $countcatalog; # Счётчик для каталогов.
my $countfile; # Счётчик для файлов.
my $filename; # Текущее имя файла (кадра).
my $newfilename; # Новое название файла (кадра).
my $convert; # Готовая команда для ImageMagick.
my @array_path_read; # Массив каталогов (входные изображения).
my @array_path_save; # Массив каталогов (выходные изображения)
my @filename_array; # Имена файлов (кадров) в массиве.
# Очистить консоль.
system('clear');
# Берём изображения (кадры) отсюда:
@array_path_read = ('Frames - Demidov S. Disk 1',
'Frames - Demidov S. Disk 2',
'Frames - Rykov V',
'Frames - Tretyakov A');
# Дальше объединяем с этим изображением:
# 'Vector-06C/Cinema-Screenshot.Contrast-50.Bright-40.png'
# После объединения, изображения (кадры) складываем сюда:
@array_path_save = ('Frames - Demidov S. Disk 1/Merged Images',
'Frames - Demidov S. Disk 2/Merged Images',
'Frames - Rykov V/Merged Images',
'Frames - Tretyakov A/Merged Images');
for ($countcatalog = 0; $countcatalog < @array_path_read;)
{
$path_read = $array_path_read[$countcatalog];
$path_save = $array_path_save[$countcatalog];
print "\n";
opendir(DIRHANDLE, $path_read) or die "Не могу открыть каталог $path_read";
print 'Чтение каталога ' . $path_read . ' - ';
$countfile = 0;
while ( defined ($filename = readdir(DIRHANDLE)) )
{
if ($filename ne '.' && $filename ne '..' && $filename ne 'Merged Images')
{
# Имена файлов в массив.
$filename_array[$countfile] = $filename;
$countfile++;
}
}
closedir(DIRHANDLE);
print 'Готово!' . "\n";
print 'Сортировка... ';
# sort - Буквы верхнего регистра предшествуют всем
# буквам нижнего регистра, а цифры предшествуют буквам.
@filename_array = sort(@filename_array);
print 'Готово!' . "\n";
print "\n";
print 'Кадры в ' . '\'' . $path_save . '\'' . ' будут перезаписаны!' . "\n";
print 'Чтобы продолжить, нажмите Enter...' . "\n";
<STDIN>;
for ($countfile = 0; $countfile < @filename_array;)
{
print 'Объединяются изображения! Обработан кадр: ' . ($countfile + 1) . '.';
print "\n";
$newfilename = substr($filename_array[$countfile], 0, length($filename_array[$countfile]) - 4);
$newfilename.= '.tga';
$convert = "convert -composite -geometry +88+8 ";
$convert.= "\'" . 'Vector-06C/Cinema-Screenshot.Contrast-50.Bright-40.png' . "\'";
$convert.= ' ';
$convert.= "\'" . $path_read . '/' . $filename_array[$countfile] . "\'";
$convert.= ' ';
$convert.= "-compress RLE";
$convert.= ' ';
$convert.= "\'" . $path_save . '/' . $newfilename . "\'";
`$convert`;
$countfile++;
}
print "\n";
$countcatalog++;
}