Делаем иконку в линуксе из любой картинки

Формат ICO подразумевает, что изображение в нем будет с размером не более 256*256 точек.

Если попробовать сконвертировать изображение больше размера без ресайза с помощью утилиты «convert», то на выходе будет файл с нулевым размером, чтобы избежать этого — достаточно написать скрипт, который в случае нулевого файла будет пытаться выполнить конвертирование меняя размер изображения до максимального возможного, т.е. 256*256 точек.

#!/bin/sh
convert upload.jpg convert.ico
if [ -s convert.ico ]
    then
        exit 1
    else
        convert -resize 256x256 upload.jpg convert.ico
fi

Суть скрипта простая — проверить полученный файл на наличие в нем информации и в случае нулевого размера — сконвертировать еще раз, но уже с ресайзом

Попробовать как работает скрипт можно тут

Остальные типы конвертаций вы можете использовать на сайте: online-converting.com