Объединение одноимённых иконок разных размеров в единый файл

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Ответить
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Объединение одноимённых иконок разных размеров в единый файл

Сообщение LonerD »

Имеется. Пакет иконок в виде ico или png-файлов. Как пример - регулярно обновляющийся FatCow от сурового [s]челябинскиго[/s] барнаульского дизайнера.
Иконки в формате ico или png разложены по разным каталогам, который называются обычно наподобие 16x16, 32х32.
Цель - автоматические объединить все одноимённые иконки из разных каталогов (то есть одинаковые иконки разных размеров) в единый ico-файл.

В идеале - сформировать на основе имеющихся иконок также иконки недостающих желаемых размеров. Скажем, имеются 16х16 и 32х32, и надо сформировать 24х24 на основе 16х16, а также 48х48 на основе 32х32.

Сделать это в разных программах можно, но вручную объединять несколько сотен или тысяч иконок - не очень увлекательно.
Windows 11 | TC DreamLair eternal pre-α
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

LonerD
А если выбрать картинки с заведомо наибольшим форматом и из них конвертировать в иконки с требующимися?

Код: Выделить всё

TOTALCMD#BAR#DATA
%ComSpec% /c for /f "delims=" %i in
('type %WL') do "C:\Program Files\Any to Icon\Any2Icon.exe" "%%i" dest="%T" sz=16x16x32,24x24x32,32x32x32,48x48x32 sr-"
C:\Program Files\Any to Icon\Any2Icon.exe
Создавать из выбранных файлов-изображений сконвертированные в ICO файлы в другой панели

1
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

Flasher писал(а):LonerD
А если выбрать картинки с заведомо наибольшим форматом и из них конвертировать в иконки с требующимися?[/code]
Тогда иконки с меньшим форматом будут не очень красивыми. Лучше получается, если брать меньший размер и растягивать его до большего. Если есть 16х16 и 32х32, то размер 24х24 получится наиболее красивым если растягивать 16х16.

За подсказку спасибо. Так немного проще - надо будет вначале сделать костяк в Any to Icon, а потом добавлять необходимое. Но всё равно много ручной работы если хочется подготовить сразу много иконок.

Можно предварительно подготовить все иконки (групповое изменение размера и конвертация поштучно каждой иконки в формат ico). Тогда можно свести задачу к следующей:
Имеются группы по четыре иконки в формате ico разных размеров. Иконки имеют одинаковое имя, но лежат в разных каталогах (согласно размеру):
16\Icon1.ico
24\Icon1.ico
32\Icon1.ico
48\Icon1.ico

или же лежат в одном каталоге, но в конце имени имеют дописку согласно размеру.
Icon1-16.ico, Icon1-24.ico, Icon1-32.ico, Icon1-48.ico.

(разложить по отдельным каталогам или выполнить групповое переименование - не проблема).
Цель - объединить по четыре соответствующих иконки в одну.
Windows 11 | TC DreamLair eternal pre-α
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

LonerD писал(а):Лучше получается, если брать меньший размер и растягивать его до большего.
Не может такого быть. Увеличатся квадраты, и иконка будет выглядеть как (4-х/8-ми)битная.
Но раз так надо, то выбирай наименьшие вместо наибольших, хотя абсурдное это дело, честное слово...
LonerD писал(а):Цель - объединить по четыре соответствующих иконки в одну.
Да это я понял, только программ с комстрокой таких пока не знаю, кроме png2ico. Не уверен, что тебе одного png хватит.
Если хватит, то скрипт будет весьма прост. Вопрос только в выборе одного из указанных способов.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

LonerD писал(а):Иконки в формате ico или png
Поскольку ты указал только эти два формата, то вопрос решается. png2ico + icobundle.
Ещё не сделал скрипт?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Serge Yolkin
Сообщения: 664
Зарегистрирован: Сб июл 25, 2009 11:12

Сообщение Serge Yolkin »

С icobundle ещё не разбирался, а вот png2ico, похоже, не знает, что бывает болше 256 цветов. Поправьте меня, если это не так.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Serge Yolkin
Не знает. Только 2, 16 и 256. В большинстве случаев достаточно 256.
Если мало, то остаётся convert.exe + vcomp100.dll от ImageMagick: convert -adjoin %S -auto-level -adaptive-resize 32x32 -despeckle -filter bessel "%T%O.ico"
Скорость в разы быстрее. С ним можно и склеивать и добавлять ресайзнутые картинки разных форматов одновременно. Правда есть определённые хитрости..

P.S.: Только не вздумай на базе IM hta делать. Изображение
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Serge Yolkin
Сообщения: 664
Зарегистрирован: Сб июл 25, 2009 11:12

Сообщение Serge Yolkin »

Flasher
Издеваешься? Я как-то (больше года назад) для ffmpeg сделать хотел, до сих пор не осилил список возможных ключей комстроки. Здесь - та же история. Если кому надо - лучше поискать готовый интерморд, наверняка ведь есть где-нибудь. Мне не надо. А для пары-тройки готовых команд em_ рулит.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Serge Yolkin
Наоборот, осознаю и предупреждаю. К тому же там есть компонент, можно на его базе всё писать, но это ещё в несколько раз тяжче...

ЗЫ: em_ тут никак не рулит..
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

Flasher писал(а):Ещё не сделал скрипт?
Нет. :?
Flasher писал(а):Не может такого быть. Увеличатся квадраты, и иконка будет выглядеть как (4-х/8-ми)битная.
Но раз так надо, то выбирай наименьшие вместо наибольших, хотя абсурдное это дело, честное слово...
Признаю, был неправ. Действительно, обычно из большего получается лучше.
Хотя не всегда. Иногда такая ситуация, что большая иконка имеет много деталей, которые при уменьшении просто размазываются, а меньшая иконка менее детализированная, и тогда лучше взять за основу её.

Тогда лучше так: при создании иконки для каждого из размеров в параметрах или прямо в теле скрипта нужно указывать из какого каталога брать файл для создания того или иного размера.
Например, вот такой частный случай:
для 16х16 иконки - брать из каталога 16
для 24х24 иконки - брать из каталога 256 (потому что 24х24 не нарисованы в данном конкретном сете)
для 32х32 иконки - брать из каталога 32
для 48х48 иконки - брать из каталога 48
Windows 11 | TC DreamLair eternal pre-α
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

LonerD писал(а):большая иконка имеет много деталей, которые при уменьшении просто размазываются
Зависит от выбора иконки бесспорно. Старайся выбирать иконки с линиями потолще. Чаще следует не использовать ресемплирование.
LonerD писал(а):для 24х24 иконки - брать из каталога 256 (потому что 24х24 не нарисованы в данном конкретном сете)
Если есть специконка для 32, то логично было бы из неё брать. Нет?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

Flasher писал(а):Если есть специконка для 32, то логично было бы из неё брать. Нет?
Наверное, всё зависит от иконки и её детализации. Сейчас попробовал сделать иконку 24 из 256 и 32 - в результате из 256 получилось чуть аккуратней.

В целом, плагин GraphicConverter решил вопрос, поднятый в начале темы. Пусть полного автоматизма с недостающими форматами и не достигнуто, но решение в несколько проходов вполне жизнеспособное для подобной не-повседневной задачи.
Windows 11 | TC DreamLair eternal pre-α
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

LonerD писал(а):Сейчас попробовал сделать иконку 24 из 256 и 32 - в результате из 256 получилось чуть аккуратней.
Я же пишу, что зависит от иконки и "улучшайзеров".
LonerD писал(а):В целом, плагин GraphicConverter решил вопрос, поднятый в начале темы.
Тогда сворачиваемся..
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

LonerD
Ещё информация. Оказывается, в последней версии nConvert (у меня старше стояла) автор добавил поддержку мультистраничных ICO.
nconvert.exe -quiet -multi -o "%O.ico" -out ico -l %L
Не все форматы берёт, правда. SVG, например.
PNG, JPEG, BMP, GIF и т.п. - без проблем.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Ответить