Pull to refresh

Comments 15

Спасибо, удобно. В свое время тоже столкнулся с проблемой, но скрипты писать не стал, а нашел вот что: ticons.fokkezb.nl — все сводится к загрузке одной большой иконки, на выходе получаем архив со всеми размерами и для iOS и для Android. Еще больше радует то, что проект открыт под лицензией Apache — при желании можно и дополнить и локально копию запустить :)
Решал эту задачу также написанием bash-скрипта, но использовал Image Magic, а не Inkscape.
UFO just landed and posted this here
Есть ещё одно решение этой проблемы, хотя оно подойдёт только пользователям photoshop. Есть замечательный набор шаблонов и встроенных скриптов для экспорта под все размеры: appicontemplate.com
Также использую Inkscape, но для Android и вместо скрипта на bash правила make. Удобство в том, что не надо следить за изменением векторного рисунка — это делает make.
если возможно, приведите, пожалуйста, пример
Как-то так (это - фрагмент):
all: icons
	ant debug

application_icons: res/drawable-xhdpi/ic_launcher.png res/drawable-hdpi/ic_launcher.png res/drawable-mdpi/ic_launcher.png res/drawable-ldpi/ic_launcher.png

icons: application_icons

res/drawable-xhdpi/%.png: images/%.svg
	mkdir -p res/drawable-xhdpi
	inkscape -e $@ -C -w 96 -h 96 $<

res/drawable-hdpi/%.png: images/%.svg
	mkdir -p res/drawable-hdpi
	inkscape -e $@ -C -w 72 -h 72 $<

res/drawable-mdpi/%.png: images/%.svg
	mkdir -p res/drawable-mdpi
	inkscape -e $@ -C -w 48 -h 48 $<

res/drawable-ldpi/%.png: images/%.svg
	mkdir -p res/drawable-ldpi
	inkscape -e $@ -C -w 36 -h 36 $<

icons_clean:
	rm -fv res/drawable-*dpi/ic_launcher.png

Конечно, вместо повторения всех файлов .png в правиле application_icons надо сделать шаблон, но я плохо помню, как.
Заинтересовала задачка. Сделать список png несложно, примерно так:

formats = xhdpi hdpi mdpi ldpi
application_icons = $(addsuffix /ic_launcher.png, $(addprefix res/drawable-,$(formats)))

Думаю, можно и правила автоматически сгенерировать, но нужно подумать, как ассоциировать формат с размером.
Пока, наверное, остановлюсь на таком:
formats = xhdpi hdpi mdpi ldpi

iconset = $(foreach icon_name,$(1),$(addprefix res/drawable-,$(addsuffix /$(icon_name).png,$(formats))))

res/drawable-xhdpi/%.png: images/%.svg
	mkdir -p res/drawable-xhdpi
	inkscape -e $@ -C -w 96 -h 96 $<

res/drawable-hdpi/%.png: images/%.svg
	mkdir -p res/drawable-hdpi
	inkscape -e $@ -C -w 72 -h 72 $<

res/drawable-mdpi/%.png: images/%.svg
	mkdir -p res/drawable-mdpi
	inkscape -e $@ -C -w 48 -h 48 $<

res/drawable-ldpi/%.png: images/%.svg
	mkdir -p res/drawable-ldpi
	inkscape -e $@ -C -w 36 -h 36 $<

icons: $(call iconset,ic_launcher sport_running sport_biking sport_generic)
Всё, кроме последней строки можно вынести в отдельный файл и включать его include'ом во все проекты. В последней строке достаточно перечислить все значки, и они будут сгенерированы для всех разрешений только при изменении исходных векторных рисунков (в моём примере это будут ic_launcher.png, sport_running.png, sport_biking.png и sport_generic.png). Поскольку я собираюсь добавлять в этот проект ещё много значков, важно, что потребуется только нарисовать картинки и один раз добавить их названия.
Мне кажется очень много разработчиков так или иначе решали эту задачу. Для себя я сделал скрипт с использованием ImageMagick и специально для Corona SDK.
gist.github.com/Lerg/b0a643a13f751747976f
А не тяжеловато ли запускать инкскейп сто раз на один файл? Юникс-вей, но с признаками извращения.
с точки зрения скорости решения вопроса, исполнение приведенного выше bash-скрипта занимает 1-2 секунды
Там иконок гораздо поболее…
Поделюсь сервисом: www.gieson.com/Library/projects/utilities/icon_slayer/#.VSg5W5PvRiJ
Надеюсь, что автору не положат сайт :)
Sign up to leave a comment.

Articles