ICO --> PNG
Модератор: Bizdelnick
-
Kuzja
- Сообщения: 675
- Статус: розовая хрюшка
ICO --> PNG
Чем сделать сабж? Много в инете вкусных значков в формате ico. Извините, если тема уже поднималась, но искать по трём символам - вещь неблагодарная.
/Ubuntu-Dapper6/Xorg7.0/GNOME-2.14.1/
-
ddc
- Бывший модератор
- Сообщения: 3535
- Статус: OpenBSD-compatible
- ОС: OpenBSD -current
Re: ICO --> PNG
ImageMagick?
А вообще, любой KDE'шный графический редактор делает на раз...
А вообще, любой KDE'шный графический редактор делает на раз...
-
Kuzja
- Сообщения: 675
- Статус: розовая хрюшка
Re: ICO --> PNG
А можно по-конкретнее насчёт ImageMagick? Какая именно программа из этого пакета может конвертировать эти форматы?
Ага, значит нашёл сам - это утилита convert (как ни странно). Но она при конвертации создаёт кучу промежуточных левых картинок, а это не очень удобно (особенно, если надо перегнать сотню значков). Может можно как-то обойтись без этого?
И ещё оно с 256х256 постоянно делает 128х128, хот я указываю -size.
Ага, значит нашёл сам - это утилита convert (как ни странно). Но она при конвертации создаёт кучу промежуточных левых картинок, а это не очень удобно (особенно, если надо перегнать сотню значков). Может можно как-то обойтись без этого?
И ещё оно с 256х256 постоянно делает 128х128, хот я указываю -size.
/Ubuntu-Dapper6/Xorg7.0/GNOME-2.14.1/
-
ddc
- Бывший модератор
- Сообщения: 3535
- Статус: OpenBSD-compatible
- ОС: OpenBSD -current
Re: ICO --> PNG
convert, видимо...
-
Kuzja
- Сообщения: 675
- Статус: розовая хрюшка
Re: ICO --> PNG
convert, видимо...
Это я уже понл
/Ubuntu-Dapper6/Xorg7.0/GNOME-2.14.1/
-
ddc
- Бывший модератор
- Сообщения: 3535
- Статус: OpenBSD-compatible
- ОС: OpenBSD -current
Re: ICO --> PNG
Kuzja
Прогоняй через трубку с resize. А какие левые файлы и что мешает их убить?
Прогоняй через трубку с resize. А какие левые файлы и что мешает их убить?
-
Kuzja
- Сообщения: 675
- Статус: розовая хрюшка
Re: ICO --> PNG
Прогоняй через трубку с resize. А какие левые файлы и что мешает их убить?
Код: Выделить всё
troorl@localhost ~/icons/internet/qq $ ls
Internet Folder.ico
troorl@localhost ~/icons/internet/qq $ convert -size 128x128 Internet\ Folder.ico inet.png
convert: No IDATs written into file `inet-10.png'.
troorl@localhost ~/icons/internet/qq $ ls
inet-0.png inet-14.png inet-19.png inet-5.png Internet Folder.ico
inet-10.png inet-15.png inet-1.png inet-6.png
inet-11.png inet-16.png inet-2.png inet-7.png
inet-12.png inet-17.png inet-3.png inet-8.png
inet-13.png inet-18.png inet-4.png inet-9.pngИ фиг поймёшь, где нужный тебе файл - все они одинаковые, только размером отличаются.
/Ubuntu-Dapper6/Xorg7.0/GNOME-2.14.1/
-
madskull
- Сообщения: 1019
- Статус: Экс-металлюга
Re: ICO --> PNG
Все правильно. ICO может содержать в себе множество картинок с разными размерами и цветами.
ArchLinux / IceWM
-
Kuzja
- Сообщения: 675
- Статус: розовая хрюшка
Re: ICO --> PNG
Все правильно. ICO может содержать в себе множество картинок с разными размерами и цветами.
Это я знаю. Но как его заставить выдирать только тот размер, который мне нужен? size не помогает.
/Ubuntu-Dapper6/Xorg7.0/GNOME-2.14.1/
-
madskull
- Сообщения: 1019
- Статус: Экс-металлюга
Re: ICO --> PNG
Подозреваю, что никак, если у convert нет специальных для ICO опций.
ArchLinux / IceWM
-
Kuzja
- Сообщения: 675
- Статус: розовая хрюшка
Re: ICO --> PNG
ОК. Тогда поставим вопрос по-другому: как найти и удалить все картинки в каталоге, которые не соответствуют определённому размеру?
/Ubuntu-Dapper6/Xorg7.0/GNOME-2.14.1/
-
madskull
- Сообщения: 1019
- Статус: Экс-металлюга
-
Kuzja
- Сообщения: 675
- Статус: розовая хрюшка
Re: ICO --> PNG
Блин, что-то я не совсем понял, как её пользоваться. Она возвращает свойства конкретно заданного файла. Причём свойства эти в слишком длинном формате... Я бы хотел, чтоб оно при
возвращало true или false, а потом можно было бы удалять или оставлять. А как с таким раскладом искать и удалять?
Код: Выделить всё
identify -size 128x128 file.pngвозвращало true или false, а потом можно было бы удалять или оставлять. А как с таким раскладом искать и удалять?
/Ubuntu-Dapper6/Xorg7.0/GNOME-2.14.1/
-
madskull
- Сообщения: 1019
- Статус: Экс-металлюга
Re: ICO --> PNG
Kuzja писал(а): ↑19.01.2006 13:58Блин, что-то я не совсем понял, как её пользоваться. Она возвращает свойства конкретно заданного файла. Причём свойства эти в слишком длинном формате... Я бы хотел, чтоб оно при
Код: Выделить всё
identify -size 128x128 file.png
возвращало true или false, а потом можно было бы удалять или оставлять. А как с таким раскладом искать и удалять?
Ну ты ваще! Включи мозги
Код: Выделить всё
if identify -format '%wx%h' file.png | grep -q 128x128; then
делаем
else
не делаем
fiили
Код: Выделить всё
if [ "$(identify -format '%wx%h' file.png)" = "128x128" ]; then
делаем
else
не делаем
fiи вообще в формате можно использовать только %w или %h
ArchLinux / IceWM
-
Kuzja
- Сообщения: 675
- Статус: розовая хрюшка
Re: ICO --> PNG
Ну ты ваще! Включи мозги
Каюсь - скрипты на баше - не моё.
Я немного переделал:
Код: Выделить всё
if identify -format '%wx%h' inet-18.png | grep -q 128x128; then
echo "no file deleted"
else
rm inet-18.png
fiВот только как бы его заставить пройтись по всем файлам и в случае else удалть именно текущий файл? На С я бы цикл задал типа for (int i=1; i<100; i++) и вставил бы эту переменну "i" в тело цикла (а именно в название файла). А как на баше это сделать, я ни бум-бум
/Ubuntu-Dapper6/Xorg7.0/GNOME-2.14.1/
-
madskull
- Сообщения: 1019
- Статус: Экс-металлюга
Re: ICO --> PNG
окружи свой if циклом for i in *png
в i будет имя очередного файла - проверяй и удаляй
в i будет имя очередного файла - проверяй и удаляй
ArchLinux / IceWM
-
Kuzja
- Сообщения: 675
- Статус: розовая хрюшка
Re: ICO --> PNG
madskull
Спасибо! Получилось!
Буду учить баш
Вот готовый вариант:
Спасибо! Получилось!
Код: Выделить всё
for i in *.png; do
if identify -format '%wx%h' $i | grep -q 128x128; then
echo "no file deleted"
else
rm $i
fi
doneБуду учить баш
Вот готовый вариант:
Код: Выделить всё
#конвертирование ico в png
convert *.ico icons.png
#удаление лишних файлов (остаются только картинки определённого размера)
for i in *.png; do
if identify -format '%wx%h' $i | grep -q 128x128; then
echo "no file deleted"
else
rm $i
fi
done
#перемещение результата в каталог png
mkdir png
mv *.png png/Ubuntu-Dapper6/Xorg7.0/GNOME-2.14.1/
-
Kuzja
- Сообщения: 675
- Статус: розовая хрюшка
Re: ICO --> PNG
Хочу добавить немного интерактивности в скрипт. Но почему-то условие не проверяется...
Код: Выделить всё
#!/bin/bash
#выбор размера картинки
echo "Enter image size (32x32, 64x64, 128x128) "
read line
if [$line!="32x32" && $line!="64x64" && $line!="128x128"]
then
echo "No correct input"
else razmer=$line
echo "RAZMER - $razmer"
#конвертирование ico в png
convert *.ico icons.png
#удаление лишних файлов (остаются только картинки определённого размера)
for i in *.png; do
if identify -format '%wx%h' $i | grep -q $razmer; then
echo "$i - is OK"
else
rm $i
fi
done
#перемещение результата в каталог png
mkdir png
mv *.png png
fi/Ubuntu-Dapper6/Xorg7.0/GNOME-2.14.1/
-
madskull
- Сообщения: 1019
- Статус: Экс-металлюга
Re: ICO --> PNG
Код: Выделить всё
if [$line!="32x32" && $line!="64x64" && $line!="128x128"]Не жалей пробелов между командами.
[ и ] - это команды, должны отделяться пробелами, переводами строк и т.п.
&& - в баше вместо него -a
переменные тоже убирай в кавычки ( "$line" != "32x32" ). Если переменная будет пуста, баш выдаст ошибку, так как получится [ !="32x32" ....
ArchLinux / IceWM
-
Kuzja
- Сообщения: 675
- Статус: розовая хрюшка
Re: ICO --> PNG
madskull
Большое спасибо! Вот конечный вариант, файнал релиз так сказать:
Большое спасибо! Вот конечный вариант, файнал релиз так сказать:
Код: Выделить всё
#!/bin/bash
#выбор размера картинки
echo "Enter image size (32x32, 64x64, 128x128) "
read line
if [ "$line" != "32x32" -a "$line" != "64x64" -a "$line" != "128x128" ]
then
echo "Bad value!"
else
echo "OK, the size is $line, START!"
#конвертирование ico в png
convert *.ico icons.png
#удаление лишних файлов (остаются только картинки определённого размера)
for i in *.png; do
if identify -format '%wx%h' $i | grep -q $line; then
echo "$i - is OK"
else
rm $i
fi
done
#перемещение результата в каталог png
mkdir png
mv *.png png
fi/Ubuntu-Dapper6/Xorg7.0/GNOME-2.14.1/