ICO --> PNG

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Аватара пользователя
Kuzja
Сообщения: 675
Статус: розовая хрюшка

ICO --> PNG

Сообщение Kuzja »

Чем сделать сабж? Много в инете вкусных значков в формате ico. Извините, если тема уже поднималась, но искать по трём символам - вещь неблагодарная.
/Ubuntu-Dapper6/Xorg7.0/GNOME-2.14.1/
Спасибо сказали:
Аватара пользователя
ddc
Бывший модератор
Сообщения: 3535
Статус: OpenBSD-compatible
ОС: OpenBSD -current

Re: ICO --> PNG

Сообщение ddc »

ImageMagick?
А вообще, любой KDE'шный графический редактор делает на раз...
Спасибо сказали:
Аватара пользователя
Kuzja
Сообщения: 675
Статус: розовая хрюшка

Re: ICO --> PNG

Сообщение Kuzja »

А можно по-конкретнее насчёт ImageMagick? Какая именно программа из этого пакета может конвертировать эти форматы?
Ага, значит нашёл сам - это утилита convert (как ни странно). Но она при конвертации создаёт кучу промежуточных левых картинок, а это не очень удобно (особенно, если надо перегнать сотню значков). Может можно как-то обойтись без этого?
И ещё оно с 256х256 постоянно делает 128х128, хот я указываю -size.
/Ubuntu-Dapper6/Xorg7.0/GNOME-2.14.1/
Спасибо сказали:
Аватара пользователя
ddc
Бывший модератор
Сообщения: 3535
Статус: OpenBSD-compatible
ОС: OpenBSD -current

Re: ICO --> PNG

Сообщение ddc »

convert, видимо...
Спасибо сказали:
Аватара пользователя
Kuzja
Сообщения: 675
Статус: розовая хрюшка

Re: ICO --> PNG

Сообщение Kuzja »

convert, видимо...

Это я уже понл :) см. пост выше.
/Ubuntu-Dapper6/Xorg7.0/GNOME-2.14.1/
Спасибо сказали:
Аватара пользователя
ddc
Бывший модератор
Сообщения: 3535
Статус: OpenBSD-compatible
ОС: OpenBSD -current

Re: ICO --> PNG

Сообщение ddc »

Kuzja
Прогоняй через трубку с resize. А какие левые файлы и что мешает их убить?
Спасибо сказали:
Аватара пользователя
Kuzja
Сообщения: 675
Статус: розовая хрюшка

Re: ICO --> PNG

Сообщение Kuzja »

Прогоняй через трубку с 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

Сообщение madskull »

Все правильно. ICO может содержать в себе множество картинок с разными размерами и цветами.
ArchLinux / IceWM
Спасибо сказали:
Аватара пользователя
Kuzja
Сообщения: 675
Статус: розовая хрюшка

Re: ICO --> PNG

Сообщение Kuzja »

Все правильно. ICO может содержать в себе множество картинок с разными размерами и цветами.

Это я знаю. Но как его заставить выдирать только тот размер, который мне нужен? size не помогает.
/Ubuntu-Dapper6/Xorg7.0/GNOME-2.14.1/
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

Re: ICO --> PNG

Сообщение madskull »

Kuzja писал(а):
19.01.2006 13:33
Все правильно. ICO может содержать в себе множество картинок с разными размерами и цветами.

Это я знаю. Но как его заставить выдирать только тот размер, который мне нужен? size не помогает.

Подозреваю, что никак, если у convert нет специальных для ICO опций.
ArchLinux / IceWM
Спасибо сказали:
Аватара пользователя
Kuzja
Сообщения: 675
Статус: розовая хрюшка

Re: ICO --> PNG

Сообщение Kuzja »

ОК. Тогда поставим вопрос по-другому: как найти и удалить все картинки в каталоге, которые не соответствуют определённому размеру?
/Ubuntu-Dapper6/Xorg7.0/GNOME-2.14.1/
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

Re: ICO --> PNG

Сообщение madskull »

Kuzja писал(а):
19.01.2006 13:39
ОК. Тогда поставим вопрос по-другому: как найти и удалить все картинки в каталоге, которые не соответствуют определённому размеру?

Опять ImageMagick :)

identify -format '%wx%h' file.png
ArchLinux / IceWM
Спасибо сказали:
Аватара пользователя
Kuzja
Сообщения: 675
Статус: розовая хрюшка

Re: ICO --> PNG

Сообщение Kuzja »

Блин, что-то я не совсем понял, как её пользоваться. Она возвращает свойства конкретно заданного файла. Причём свойства эти в слишком длинном формате... Я бы хотел, чтоб оно при

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

identify -size 128x128 file.png

возвращало true или false, а потом можно было бы удалять или оставлять. А как с таким раскладом искать и удалять?
/Ubuntu-Dapper6/Xorg7.0/GNOME-2.14.1/
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

Re: ICO --> PNG

Сообщение madskull »

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

Сообщение Kuzja »

Ну ты ваще! Включи мозги

Каюсь - скрипты на баше - не моё.
Я немного переделал:

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

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

Сообщение madskull »

окружи свой if циклом for i in *png
в i будет имя очередного файла - проверяй и удаляй
ArchLinux / IceWM
Спасибо сказали:
Аватара пользователя
Kuzja
Сообщения: 675
Статус: розовая хрюшка

Re: ICO --> PNG

Сообщение Kuzja »

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

Сообщение Kuzja »

Хочу добавить немного интерактивности в скрипт. Но почему-то условие не проверяется...

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

#!/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

Сообщение madskull »

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

if [$line!="32x32" && $line!="64x64" && $line!="128x128"]


Не жалей пробелов между командами.
[ и ] - это команды, должны отделяться пробелами, переводами строк и т.п.
&& - в баше вместо него -a
переменные тоже убирай в кавычки ( "$line" != "32x32" ). Если переменная будет пуста, баш выдаст ошибку, так как получится [ !="32x32" ....
ArchLinux / IceWM
Спасибо сказали:
Аватара пользователя
Kuzja
Сообщения: 675
Статус: розовая хрюшка

Re: ICO --> PNG

Сообщение Kuzja »

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/
Спасибо сказали: