![]() |
Задача по автоматизации. Склейка 2х jpg файлов
Добрый день.
Есть более тысячи файлов изображений. Размер маленький, каждый 400-600кб. Файлы одинаковые - ширина, высота, ориентация (книжная) и битность (серый 8bit). Имена файлов последовательно (2011_0001, 2011_0002 ... и т.д.). Склейка - по узкой стороне. Требуется "взять" первый (нечетный) и снизу приклеить второй (четный) и сохранить в файл 2011_s***. Вместо звездочек нарастающий номер. Идеальный вариант: указать 2 папки - откуда брать и куда складывать. Работа разовая - ПО не критично, поставим, сделаем и снесем. Какие уважаемое общество может предложить варианты. |
с ImageMagick идет утилита convert.exe, она может объединять файлы
а bat-файл помогут написать здесь http://forum.oszone.net/forum-102.html |
irvicon, попробуйте так:
|
а зачем столько echo?
|
Я исполняю скрипты под консольным «cscript.exe» (я указал на это обстоятельство в примере; более того — «cscript.exe» у меня назначен как стандартный сервер сценариев [вместо «wscript.exe»]). Это даёт такое преимущество, как возможность вывода текста, индикаторы прогресса в консоли, простое перенаправление вывода в файл и т.п.
Ну, и работаю я под Far Manager'ом, где вывод консольной программы сразу можно перенаправить в его вьюер, або в редактор. |
Цитата:
|
Цитата:
Куда слать пиво?) |
Цитата:
|
Цитата:
Большое спасибо за предложенный вариант, немного допилив использовал и в своих целях. :clapping: |
А с чем может быть связана ошибка "Could not locate automation class named "WIA.ImageFile"" при запуске указанного выше VBS скрипта?
И каким образом там вообще осуществляется склейка изображений, с пережатием или без? Собственно был бы очень благодарен если подскажите решение по объединению двух JPEG файлов (одинаковая ширина и высота, а так же параметры сжатия) в один, желательно lossless. А так же прошу подсказать, что необходимо поправить в скрипте, если правому файлу "***.jpg" соответсвует левый "***_.jpg" (имя файла произвольной длинны). |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
В связи с оптимизацией веб-страниц на которых они располагаются встал вопрос с объединением пар изображений в одно. Цитата:
0909.jpg и соответствующая ему пара 0909_.jpg в 0909_out.jpg Хотел попробовать приведенный здесь скрипт (т.к. ввариант с "входящей" и "исходящей" папками тоже подходит), но почти сразу появилась вышеуказанная ошибка. Цитата:
Вот пару найденных мной обсуждений данного вопроса: http://www.programmersforum.ru/showthread.php?t=245229 http://forum.ru-board.com/topic.cgi?forum=36&topic=1429 http://forum.ixbt.com/topic.cgi?id=20:15554 http://sasgis.org/mantis/view.php?id=1203 В ходе поисков так же нашлась и эта когда-то решенная тема. |
Цитата:
Windows Image Acquisition Automation Layer Windows Image Acquisition (WIA) (Windows) Ссылка на загрузку библиотеки «Windows Image Acquisition Library v2.0» и SDK: … Упс, убрали с сайта Microsoft. Попробую вечером посмотреть, что можно сделать. |
Спасибо за объяснения, буду пробовать.
Кстати, если я правильно определил и нашел, то скачать можно по этой ссылке: http://vbnet.mvps.org/files/updates/wiaautsdk.zip |
Цитата:
Выложите для экспериментов штуки три-четыре пары изображений на RGhost, упаковав их в архив. |
Теперь все сработало, но видимо все же придется искать другое решение.
С таким уровнем компрессии по умолчанию - мне никак не подходит. Жаль что lossless склейка JPG похоже до ума так и не доведена. Я так до конца и не понял, может ли эта утилита соединять. http://jpegclub.org/jpegtran/ Все попытки её вызова так ни к ему и не привели, у меня постоянно пишет какую-нибудь ошибку синтаксиса командной строки. Цитата Iska: Выложите для экспериментов штуки три-четыре пары изображений на RGhost, упаковав их в архив. » http://rghost.ru/8WhBJn5t8 |
pzh2393, это те реальные файлы, что требуется объединить? Я что-то сомневаюсь. Как Вы их ранее могли «нарезать» из одной картинки, если это и есть одна и та же картинка, только разных форматах?
Так же не представляю, как Вы вообще предполагали без пересжатия объединить изображения в разных форматах: Скрытый текст
Код:
Common и Скрытый текст
Код:
Common Поясните этот вопрос. |
Цитата Iska:
это те реальные файлы, что требуется объединить? Я что-то сомневаюсь. » Да, вы меня подловили - это не именно те файлы. Дело в том, что руководитель категорически запретил выкладывать какие-либо файлы проекта, пришлось выкручиваться. Мне, как дизайнеру, не пришло в голову, что могут быть такие технические отличия, мне просто было так проще обозначить отличия. Суть "истинных" файлов почти такая же - два состояния одного и того же изображения, правда действительно обе картинки 24 bpp, RGB. Если вам действительно интересна эта задача - можно попытаться объединить 1_.jpg c 0909_.jpg, обе картинки цветные, и уж точно сжаты с одними параметрами. P.S. Собственно говоря это моя личная инициатива по автоматизации склейки старых изображений, задача изначально поставлена - сделать с "нуля" заново. :( |
pzh2393, посмотрел, почитал… Полагаю, с Вашими изображениями — фокус не удастся.
Но почему Вам категорически не нравится простое склеивание: Код:
"C:\Program Files\ImageMagick-6.8.0-Q16\convert.exe" 1_.jpg 0909_.jpg +append Result.jpg Скрытый текст
![]() |
Да, это один из возможных вариантов, я даже пробовал ключ позволяющий указать "качество" выходного JPEG.
Но для своих нужд, методом проб, так и не подобрал оптимальный вариант. Либо выходной файл получается намного большим (примерно в 1,5, иногда в 2 раза) по "весу" (в килобайтах) чем суммарно два его "прародителя", либо уровень искажений при повторном сжатии практически уничтожает все мелкие элементы изображения, что так же нельзя принять как приемлемый результат. P.S. Кстати, lossless склеивание с этими изображениями все равно не получился бы, поскольку выяснилось что для такой операции необходимо чтобы сторона была кратна 16. |
Цитата:
Цитата:
Цитата:
Ну, нет — так нет. Тогда хоть расскажите, как Вы их делаете «с нуля»? |
Цитата:
Для себя же решил делать следующим образом: 0. Создаем (или уже имеем) набор "базовых" изображений. Мне, например, надо будет сначала нарезать их из векторного формата, скорее всего с доработкой по ходу дела. Именно этой части работы и хотелось избежать склеивая уже когда-то подготовленные изображения. 1. На одном изображении в Фотошоп вручную записываем "action" приводящий к нужному конечному результату с этой картинкой, и сохраняем в PNG или TIFF (главное чтобы формат без потерь). 2. Пакетной обработкой, в том же Фотошоп, обрабатываем все нужные изображения (указав папку источник) записанным "action". 3. ImageMagick или любым другим пакетным образом склеиваем "полукадры", сохраняя исходящим форматом PNG или TIFF. 4. Любым пакетным образом перекодируем полученные "склейки" в JPEG (с подходящей степенью сжатия). Тут уже большой простор для выбора софта. Собственно, если изображений около 1000, как у меня, это здорово сберегает время и нервы. |
Цитата:
Цитата:
Скрытый текст
pzh2393, у меня возникло ощущение дикого дежавю: мы раньше не общались на подобную тему, имеющую касательство к Photoshop? Может быть, не здесь. Вы никогда ранее не описывали что-либо на похожую тему, так же начиная с нулевого пункта?
Как я понимаю, промежуточные результаты в формате «без потерь качества» не сохранились, остались только Jpeg'и, и посему надо начинать с нуля, да? Тут действительно, можно только посочувствовать. Всё, что можно автоматизировать, Вы уже автоматизировали, а оставшуюся ручную работу ничем не заменишь. |
Цитата:
как говорится "знать бы где упадешь - постелил бы соломки". кто же знал, что спустя годы могут снова понадобится промежуточные файлы. Хранили только "исходники" и используемые конечные файлы. |
Время: 21:32. |
Время: 21:32.
© OSzone.net 2001-