Как добавить альфа-канал в мои файлы PNG с помощью ImageMagick?

У меня уже есть несколько приложений для Mac, созданных с помощью другого инструмента, для которого мне нужно создавать образы Apple. Они были созданы в формате PNG без альфа-канала и сохранены в папке.

Я попытался сделать следующую команду:

iconutil -c icons myfolder.iconset

Я получил несколько ошибок, как показано ниже:

iconutil error: Unsuported image format

Прочитав этот пост вместе с парой постов о переполнении стека, я понял, что мне нужно иметь альфа-канал на своих изображениях. Это не указано в документации Apple Developer.

Я попытался использовать Preview для этого, но из проведенного мною исследования, включая просмотр нескольких видео, мне пришлось бы удалить цвет, который испортил бы мои значки, особенно меньшие. Мои значки имеют черный фон, и попытка удалить то, что на них мало белого, станет кошмаром для маленьких значков.

На эту ссылку есть комментарий Дэвида Грейсона, в котором говорится, что ImageMagick может быть использован для добавления альфа-канала. В комментарии говорилось, что если я выполню следующую команду для каждого png-файла, который должен работать.

convert old_icon_16x16.png -define png:color-type=6 icon_16x16.png

Однако, когда я выполняю это, я получаю следующую ошибку:

Abort trap: 6

Затем я пошел по этой ссылке, на которую ссылается основной сайт ImageMagick для примеров. Я попробовал следующую команду.

convert old_icon_16x16.png -alpha off -alpha on icon_16x16.png

Я получил следующую ошибку:

Abort trap: 6

Я не уверен, куда идти отсюда.

1 ответ

Решение

Если вы получаете Abort или же Segmentation FaultsЭто попахивает несоответствием в компиляции / сборке / компоновке вашего ImageMagick.

Я бы посоветовал вам удалить все, что вы установили из ImageMagick, и начать заново с homebrew что является самым простым способом установки ImageMagick на OSX. По сути, вы заходите на сайт Homebrew, копируете и вставляете однострочник в терминал, чтобы установить его (я не хочу показывать здесь строку в случае, если она изменится в будущем, и это устареет).

После того, как вы установили homebrew, это всего лишь вопрос:

brew install imagemagick

Если вы хотите увидеть варианты поддержки X11, TIFF, fftw и т. Д., Просто запустите:

brew options imagemagick

Выход

--with-fftw
    Compile with FFTW support
--with-fontconfig
    Build with fontconfig support
--with-ghostscript
    Build with ghostscript support
--with-hdri
    Compile with HDRI support
--with-jp2
    Compile with Jpeg2000 support
--with-liblqr
    Build with liblqr support
--with-librsvg
    Build with librsvg support
--with-libwmf
    Build with libwmf support
--with-little-cms
    Build with little-cms support
--with-little-cms2
    Build with little-cms2 support
--with-openexr
    Build with openexr support
--with-openmp
    Compile with OpenMP support
--with-pango
    Build with pango support
--with-perl
    enable build/install of PerlMagick
--with-quantum-depth-16
    Compile with a quantum depth of 16 bit
--with-quantum-depth-32
    Compile with a quantum depth of 32 bit
--with-quantum-depth-8
    Compile with a quantum depth of 8 bit
--with-webp
    Build with webp support
--with-x11
    Build with x11 support
--without-freetype
    Build without freetype support
--without-jpeg
    Build without jpeg support
--without-libpng
    Build without libpng support
--without-libtiff
    Build without libtiff support
--without-magick-plus-plus
    disable build/install of Magick++
--without-opencl
    Disable OpenCL
--HEAD
    Install HEAD version

Тогда вы можете сделать:

brew install imagemagick --with-hdri --with-librsvg

или, если вы уже установили ImageMagick, вы можете изменить установленные параметры с помощью:

brew reinstall imagemagick --with-x11 ...

Как отмечает Гленн в комментариях, более простая команда, чем та, которую вы используете, вероятно:

convert old_icon_16x16.png png32:icon_16x16.png

Также обратите внимание, что convert становится magick начиная с версии 7 - хотя homebrew все еще поставляет версию 6 в данный момент.

Другие вопросы по тегам