sips show Невозможно отобразить конечное изображение

Я использовал sips, чтобы изменить размер изображения PNG, как показано ниже.

sips -z 768 1024 image.png --out image-resize.png

Это работает хорошо. Но сегодня я получил сообщение об ошибке, как показано ниже

<CGColor 0x7ffb72e05c40> [<CGColorSpace 0x7ffb72e04e70> (kCGColorSpaceDeviceRGB)] ( 0 0 0 1 )
Error: Unable to render destination image

Если кто-то может помочь, это будет очень цениться.

2 ответа

Решение

Изменение значения цветового профиля с 16-битного RGB на 8-битный sRGB решает эту проблему.

Это можно сделать одной командой в Терминале:

find . -type f -name '*.png' -print0 | while IFS= read -r -d '' file; do sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' "$file" --out "$file"; done

Затем изображения могут быть изменены с помощью глотков. Для пакетного изменения размера я использую эту команду:

mdfind -0 -onlyin . "kMDItemPixelHeight > 600 || kMDItemPixelWidth > 600" | xargs -0 sips -Z 600

И в завершение, эта команда для уменьшения размера файлов изображений:

find . -name '*.png' -exec pngquant --skip-if-larger --ext .png --force {} \; -exec xattr -c {} \;
sips -s format jpeg image.png --out image.jpg
sips -z 768 1024 image.jpg --out image-resize.jpg
Другие вопросы по тегам