перевернуть ico-изображение без потери качества или увеличения размера

Моя цель — взять ico-изображение, подобное этому wikipedia.ico , и перевернуть его по вертикали. Моя первая попытка была

$ convert -flip wikipedia.ico flipped.ico

И это работает, за исключением того, что полученный файл flipped.icoбольше исходного:

$ identify wikipedia.ico 
wikipedia.ico[0] ICO 48x48 48x48+0+0 4-bit sRGB 2734B 0.000u 0:00.000
wikipedia.ico[1] ICO 32x32 32x32+0+0 4-bit sRGB 2734B 0.000u 0:00.000
wikipedia.ico[2] ICO 16x16 16x16+0+0 4-bit sRGB 2734B 0.000u 0:00.000

$ identify flipped.ico 
flipped.ico[0] ICO 48x48 48x48+0+0 8-bit sRGB 15086B 0.000u 0:00.000
flipped.ico[1] ICO 32x32 32x32+0+0 8-bit sRGB 15086B 0.000u 0:00.000
flipped.ico[2] ICO 16x16 16x16+0+0 8-bit sRGB 15086B 0.000u 0:00.000

Добавление флага -depth 4не помогает.

Как я могу получить точно такое же изображение, просто перевернутое?

Изменить :

Благодаря ответу Паоло Джибеллини он получил файл меньшего размера flipped.ico. Однако использование -colors 16 -depth 4все еще приводит к файлу, который намного больше оригинала:

$ convert -flip -colors 16 -depth 4 wikipedia.ico flipped.ico
$ ls -l flipped.ico wikipedia.ico
[...] 10734 May 14 21:05 flipped.ico
[...]  2734 May 14 09:41 wikipedia.ico
$ identify flipped.ico 
flipped.ico[0] ICO 48x48 48x48+0+0 8-bit sRGB 10734B 0.000u 0:00.009
flipped.ico[1] ICO 32x32 32x32+0+0 4-bit sRGB 10734B 0.000u 0:00.000
flipped.ico[2] ICO 16x16 16x16+0+0 4-bit sRGB 10734B 0.000u 0:00.000

Я запускаю это на компьютере с Debian. В первой строке вроде еще какое-то 8-битное изображение. Есть ли способ сделать flipped.ico точно такого же размера? Это действительно работает на окнах, как указано в ответе?

Ответы (1)

Чтобы флаг -depth 4работал, вы должны использовать также флаг -colorsс желаемой глубиной цвета (в вашем случае 16).

Следующая команда должна сгенерировать значок того же размера, что и оригинал:

$ convert -flip -colors 16 -depth 4 wikipedia.ico flipped.ico

Я протестировал его в Windows ( версия ImageMagick 7.0.3-Q16 ), и перевернутый значок имеет тот же размер , что и оригинал.

См. также этот форум .

-- Обновлять --

Я протестировал приведенную выше команду на компьютере с Debian ( версия ImageMagick 6.3.7-Q16 ) и на машине с CentOS ( версия ImageMagick 6.7.8-9-Q16 ), и в обоих случаях я получил значок с одинаковым размером оригинал (2734 байта).

Как справка, выходные данные разных версий идентифицируют по-разному.

определить 6.3.7

identify wikipedia.ico
wikipedia.ico[0] ICO 48x48 48x48+0+0 DirectClass 8-bit 2.66992kb
wikipedia.ico[1] ICO 32x32 32x32+0+0 DirectClass 8-bit 2.66992kb
wikipedia.ico[2] ICO 16x16 16x16+0+0 DirectClass 8-bit 2.66992kb

определить 6.7.8-9

identify wikipedia.ico
wikipedia.ico[0] ICO 48x48 48x48+0+0 4-bit DirectClass 2.73KB 0.000u 0:00.000
wikipedia.ico[1] ICO 32x32 32x32+0+0 4-bit DirectClass 2.73KB 0.000u 0:00.000
wikipedia.ico[2] ICO 16x16 16x16+0+0 4-bit DirectClass 2.73KB 0.000u 0:00.000

определить 7.0.3

identify wikipedia.ico
wikipedia.ico[0] ICO 48x48 48x48+0+0 4-bit sRGB 2.73KB 0.000u 0:00.000
wikipedia.ico[1] ICO 32x32 32x32+0+0 4-bit sRGB 2.73KB 0.000u 0:00.000
wikipedia.ico[2] ICO 16x16 16x16+0+0 4-bit sRGB 2.73KB 0.000u 0:00.000

Вы используете обновленную версию ImageMagick?

спасибо, это уже улучшение! Однако на моем ящике Debian размер по- flipped.icoпрежнему намного больше. отредактирую вопрос..
Это странно. Когда будет возможно, я проверю на машине с Debian.
Это было бы прекрасно! Привел ли тест к каким-либо выводам?
Я обновил ответ.
В моем вопросе выше я использовал версию 6.9.9-39 Q16. Теперь я попробовал другую машину с версией 6.9.7-4 Q16, и она работала безупречно. Кажется, это какая-то ошибка в моей конкретной версии. Также нельзя сказать, что флаг depth 4даже не нужен; colors 16достаточно. Отличный ответ! И спасибо, что попробовали на разных машинах, чтобы направить меня на верный путь!