Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.06.2020, 20:41
Кандидат Javascript-наук
Отправить личное сообщение для mik888em Посмотреть профиль Найти все сообщения от mik888em
 
Регистрация: 21.06.2020
Сообщений: 142

Как быстро объединить много png картинок в один jpg файл?
Привет всем. Пытаюсь реализовать такую штуку уже 2 день, но чтот не выходит. Подскажите как решить эту задачу.

Есть 2 папки с картинками. Папка "Правые" и папка "Левые".

В этих папках лежат по 100 штук png картинок с прозрачным фоном. Итого в 2-х папках 200 png картинок.

В папке "Правые" - лежат картинки которые должны стоять справа

В папке "Левые" - лежат картинки которые должны стоять слева

Нужно объединить все эти картинки, чтоб каждая картинка из папки "Правые" использовала по 1 разу все картинки из папки "Левые" и далее, чтоб каждая картинка из папки "Левые" использовала по 1 разу все картинки из папки "Правые"

В каждой папке лежат те картинки, которые должны стоять в итоговом (склееном) изображении с определенной стороны - слева и справа.

Итого должно получиться 100х100=10000 картинок.

Как это сделать скриптом? Встроенная в фотошоп пакетная обработка вроде для этого не подходит.
Ответить с цитированием
  #2 (permalink)  
Старый 22.06.2020, 05:54
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Берешь ImageMagick. Командная строка:
FOR %I IN (D:\IMG\L\*.png) DO (FOR %J IN (D:\IMG\R\*.png) DO (magick %I %J -background white -alpha remove +append -quality 92 D:\IMG\L+R\%~nI+%~nJ.jpg))
Ответить с цитированием
  #3 (permalink)  
Старый 22.06.2020, 17:30
Кандидат Javascript-наук
Отправить личное сообщение для mik888em Посмотреть профиль Найти все сообщения от mik888em
 
Регистрация: 21.06.2020
Сообщений: 142

на линукс не стал ставить. поставил на винду.
Запустил от имени админа cmd и вбил код. Все директории указал верно, всё лежит на своих местах! Все название png-шек на латинце.

имейджмеджик вот что выдаёт и так бежит бесконечно. Может какие-то дополнительные библиотеки нужно установить?

https://prnt.sc/t4dw7q

Вот какой код я запускал:
FOR %I IN (F:\L\*.png) DO (FOR %J IN (F:\R\*.png) DO (magick %I %J -background white -alpha remove +append -quality 75 F:\L+R\%~nI+%~nJ.jpg))

Последний раз редактировалось mik888em, 22.06.2020 в 17:53.
Ответить с цитированием
  #4 (permalink)  
Старый 22.06.2020, 21:15
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Пробелы в путях, надо кавычки добавить:
FOR %I IN ("D:\IMG\L\*.png") DO (FOR %J IN ("D:\IMG\R\*.png") DO (magick "%I" "%J" -background white -alpha remove +append -quality 92 "D:\IMG\L+R\%~nI+%~nJ.jpg"))
Ответить с цитированием
  #5 (permalink)  
Старый 22.06.2020, 22:55
Кандидат Javascript-наук
Отправить личное сообщение для mik888em Посмотреть профиль Найти все сообщения от mik888em
 
Регистрация: 21.06.2020
Сообщений: 142

Пробелы в названиях файлов убрал, кавычки добавил в код. запустил код.

FOR %I IN ("F:\L\*.png") DO (FOR %J IN ("F:\R\*.png") DO (magick "%I" "%J" -background white -alpha remove +append -quality 75 "F:\L+R\%~nI+%~nJ.jpg"))



Imagemagick видит png файлы но пишет:

C:\Program Files\ImageMagick>(magick "F:\L\49.png" "F:\R\33.png" -background white -alpha remove +append -quality 75 "F:\L+R\49+33.jpg" )
magick: unable to open image 'F:\L+R\49+33.jpg': No such file or directory @ error/blob.c/OpenBlob/3539.


Скриншот работы: https://prnt.sc/t4lgyy

Последний раз редактировалось mik888em, 23.06.2020 в 00:25.
Ответить с цитированием
  #6 (permalink)  
Старый 23.06.2020, 00:25
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Так папки то F:\L+R\ нет.
Ответить с цитированием
  #7 (permalink)  
Старый 23.06.2020, 01:36
Кандидат Javascript-наук
Отправить личное сообщение для mik888em Посмотреть профиль Найти все сообщения от mik888em
 
Регистрация: 21.06.2020
Сообщений: 142

сейчас создал папку и всё заработало, но есть проблема.

У каждой PNG-ки, с каждой стороны есть прозрачный фон, но когда ImageMagick склеивает две Png-ки, то он заливает прозрачный фон - белым цветом и вот что получается, см скриншот, там видны 2 исходные png и финальная (склееная) jpg с белой серединой, которой не должно там быть : https://prnt.sc/t4meay
Ответить с цитированием
  #8 (permalink)  
Старый 23.06.2020, 08:32
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,491

jpg не поддерживает прозрачность.
__________________
29375, 35
Ответить с цитированием
  #9 (permalink)  
Старый 23.06.2020, 09:13
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

mik888em,
FOR %I IN ("D:\IMG\L\*.png") DO (FOR %J IN ("D:\IMG\R\*.png") DO (magick "%I" "%J" -background "rgba(255,255,255,0)" -alpha remove -bordercolor "rgba(255,255,255,0)" -border 1 -trim +append -quality 92 "D:\IMG\L+R\%~nI+%~nJ.jpg"))

Прозрачный тоже представляет какой-то цвет, а не то что его там нет. Например, это rgba(255,255,255,0) - белый прозрачный.

Последний раз редактировалось Rise, 23.06.2020 в 09:18.
Ответить с цитированием
  #10 (permalink)  
Старый 23.06.2020, 11:02
Кандидат Javascript-наук
Отправить личное сообщение для mik888em Посмотреть профиль Найти все сообщения от mik888em
 
Регистрация: 21.06.2020
Сообщений: 142

Спасибо огромное! все заработало как надо!
вот финальный код который я использую. может кому-то будет полезно.

FOR %I IN ("F:\L\*.png") DO (FOR %J IN ("F:\R\*.png") DO (magick "%I" "%J" -background "rgba(255,255,255,0)" -alpha remove -bordercolor "rgba(255,255,255,0)" -border 1 -trim +append -quality 70 "F:\L+R\%~nI+%~nJ.jpg"))
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Люди, помогите дилетанту! Как объеденить скрипты в один файл? patroklit Элементы интерфейса 3 04.12.2013 13:55
Как объединить два скрипта в один Dahunpao Events/DOM/Window 2 12.09.2013 19:17
Как скопировать canvas и объединить все в один новый lekba Элементы интерфейса 2 26.05.2013 17:38
Клонирование DOM объекта или как вставить один div много раз Jmunb Общие вопросы Javascript 7 04.04.2013 14:58
JS классы - как объединить функции в класс olga153b Events/DOM/Window 3 01.11.2011 14:13