Рад помочь вам в этом, но в будущем постарайтесь сохранить минимально воспроизводимый вопрос. Трудно ответить на дамп всех проблем.
// \( -clone 0 -alpha extract \)
Magick::Image layer1(button);
layer1.alpha(); // how to set alpha extract and how this layer is used?
Используйте Magick::Image.alphaChannel(Magick::ExtractAlphaChannel)
вместо Magick::Image.alpha()
.
layer2.border(Magick::border()); //parameter is of type Geometry not double
Поведение CLI знает, что -border 9
действительно означает -border 9x9
, поэтому геометрия должна это отражать.
layer2.border(Magick::Geometry(9, 9));
//how to -delete 0
//how to +swap
Вы можете игнорировать эти операторы, работая в OOP язык --- то есть ---- вы уже делаете это с переменными экземпляра. Просто обратите внимание на порядок операций.
//how to level colors
Ах! Теперь это хитрый. С Magick ++ вы бы вызвали Magick::Image.levelColors()
, но команда CLI вызывает +level-colors
- это обратный метод с именем levelize
, но Magick::Image.levelizeColors()
не существует в Magick ++ (пока). Вам нужно будет найти альтернативное решение.
Метод Magick::Image.levelizeChannel()
действительно существует, поэтому немного математики, и вы можете перевести части цветового канала в белые и черные точки.
/*
+level-colors '#0D____','#19____'
blackpoint = 3276.75 = 0x0D / 255.0 * QuantumRange
whitepoint = 5898.15 = 0x19 / 255.0 * QuantumRange
Where QuantumRange is usually 65535
*/
button.levelizeChannel(Magick::RedChannel, 3276.75, 5898.15);
/*
+level-colors '#__5A__','#__AA__'
blackpoint = 22937.25 = 0x5A / 255.0 * QuantumRange
whitepoint = 43253.1 = 0xAA / 255.0 * QuantumRange
Where QuantumRange is usually 65535
*/
button.levelizeChannel(Magick::GreenChannel, 22937.25, 43253.1);
/*
+level-colors '#____84','#____F9'
blackpoint = 33422.85 = 0x84 / 255.0 * QuantumRange
whitepoint = 63568.95 = 0xF9 / 255.0 * QuantumRange
Where QuantumRange is usually 65535
*/
button.levelizeChannel(Magick::BlueChannel, 33422.85, 63568.95);
Обновление
Похоже, я пропустил параметр invert
для метода Magick::Image.levelColors()
. Не обращайте внимания на метод обхода levelizeChannel
, описанный выше, и используйте следующее ....
// +level-colors '#0D5A84','#19AAF9'
button.levelColors(Magick::Color("#0D5A84"), Magick::Color("#19AAF9"), true);