Я пытаюсь уменьшить глубину канала PNG с 8 до 4, используя Magick ++. Я использую следующий код для этого:
Image * img = new Image("./image8.png");
img->channelDepth(ChannelType::AllChannels,4);
img->write("./image4.png");
Для цветных изображений это прекрасно работает. Но для изображений в градациях серого ImageMagick делает что-то странное. Он сжимает весь контент в левую половину изображения и отображает случайные пиксели в правой половине.
превращается в это с кодом выше:
У кого-нибудь есть объяснение этому поведению и / или идея, как мне это решить?
Или это может быть даже ошибка изображения магии?
Похоже, ошибка в вашей версии ImageMagick. В текущей версии (6.9.2-8) ошибка не отображается при запуске из командной строки:
Других решений пока нет …