Есть много аспектов этого вопроса, и я не буду делать вид, чтобы покрыть их все. Некоторые из переменных:
Тип диска, на котором хранятся изображения - механический диск, RAID, SSD, RAMdisk
Формат, в котором вы храните свои изображения - PNG, JPEG, или ImageMagick MPC, например
Что библиотека/программное обеспечение вы используете - GD, ImageMagick или других
используете ли вы многоядерные/многопоточные/распределенный подход
Как вы на самом деле реализовать ваши обработки
Я сделал некоторые эксперименты и создали 1000 изображений, каждый 512x512 пикселей. Я создал их на RAID, на SSD и на RAM-диске. Я создал их как формат PNG, так и формат ImageMagick MPC (Magic Pixel Cache). Затем я читаю их попарно для компоновки, то есть image0 с изображением999, затем изображения1 и image998, image2 с изображением997 ...
Код выглядит так:
#!/bin/bash
rm *.png *.mpc *.cache
for extension in png mpc; do
echo Testing $extension
# Create 1,000 input files
for i in {0..999}; do convert -size 512x512 xc: +noise random $i.$extension ;done
# Read the files in pairwise for processing, 0 with 999, 1 with 998, 2 with 997
time for i in {0..999}; do j=$((999-i)) ;convert $i.$extension $j.$extension null:;done
rm *.png *.mpc *.cache
done
Вот результаты для 1000 композитов
RAID disk, PNG format: 43 seconds
RAID disk, MPC format: 6.9 seconds
SSD disk, PNG format: 33 seconds
SSD disk, MPC format: 6.1 seconds
RAM disk, PNG format: 30 seconds
RAM disk, MPC format: 6.0 seconds
вывожу есть существенное преимущество для сохранения изображений в формате MPC при использовании ImageMagick. Я также отмечаю, что время на диске RAM не намного лучше, чем времена SSD, поэтому значительное количество времени обработки, вероятно, создает 1000 процессов для композитинга ....
... который подводит меня к моему следующая точка, количество процессов, которые вы создаете. Это, вероятно, будет полезно, если вы можете сделать всю обработку в одном процессе, так, а не делать 12 процессов это:
composite view1 with background1
composite view1 with background2
composite view2 with background1
composite view2 with background2
composite view3 with background1
composite view3 with background2
composite view4 with background1
composite view4 with background2
...
вы должны попытаться сделать это
load view1..4 background1..2, composite v1 b1 +write, composite v1 b2 + write, composite v1 b1 +write
, которое легко сделать в ImageMagick
convert view{1..4} background{1..2} \(-clone 0,4 -composite +write v1b1.jpg \)
\(-clone 0,5 -composite +write v1b2.jpg \)
...
Примечание:
Некоторые из этих ответов становятся неактуальными, теперь вы обновили свой вопрос, но поскольку я потратил время на это, я оставлю его для справки.
Как насчет того, чтобы показывать нам исходные изображения и результирующие изображения? Сколько у вас изображений - можете ли вы предварительно создать все комбинации и сохранить их? –
показать стартовые изображения ?? может быть образ ребенка + разные образы backgroudn темы – mydeve
Итак, давайте продолжим использовать пример ребенка. Клиент X посещает ваш сайт, и у вас есть 4 фотографии ребенка клиента X, которые выглядят под разными углами (предположительно, на прозрачном фоне), и у вас есть 3 разных фона, и вы хотите комбинировать каждый из 4 видов с каждым из трех фонов и создавать 12 изображений. Верный? Каковы размеры ваших изображений, то есть 2000 пикселей на 1200 пикселей и какой размер в kB, и являются ли они PNG или JPEG? –