удаление прозрачности Imagemagick не работает с методом сглаживания

Я пытаюсь удалить прозрачность с помощью ImageMagick. Следующая команда работает для большинства изображений, но не для всех. В некоторых случаях это портит изображение. "-remove alpha" решает проблему, но я не знаю, как это сделать в коде Magick ++. Я использую следующую команду, которая не работает с несколькими изображениями. Прилагаю один образец.

команда: convert -flatten -background white a.png a-removeTransparency.jpg

исходное изображение


person Kiran    schedule 13.07.2018    source источник


Ответы (2)


Пример в magick ++ выглядел бы как как...

#include <Magick++.h>
#include <vector>

int main(int argc, const char * argv[]) {
    std::vector<Magick::Image> images;
    Magick::Image input, output;
    // Create example image
    input.size(Magick::Geometry(100, 100));
    input.read("GRADIENT:GREEN-TRANSPARENT");
    // Set background color
    input.backgroundColor(Magick::Color("RED"));
    // Add image to list
    images.push_back(input);
    // Perform flatten operation
    Magick::flattenImages(&output, images.begin(), images.end());
    // Safe to disk
    output.write("output.png");
    return 0;
}

Что бы преобразовало изображение вроде ...

input

to

output

Ключевой момент, который нужно понять, это то, что Magick ++ имеет Standard Template Libary со множеством вспомогательных методов, и большинство методов ожидали, что будет действовать список (вектор) изображений. Если вы не можете найти то, что вам нужно в классе Magick::Image, то, вероятно, на STL все кончено.

person emcconville    schedule 13.07.2018
comment
Спасибо. Я делаю то же самое. Я использую STL flattenImages. Это должно работать для всех изображений. Поскольку я работаю над множеством изображений, я хотел обратиться к сообществу и спросить, не искажает ли оно какое-либо изображение. - person Kiran; 13.07.2018

Правильная команда в Imagemagick - поставить такие параметры, как -background, перед такими операторами, как -flatten. И что еще более важно, сначала прочтите ввод. Это даже более важно в IM 7. IM 6 более снисходителен. Так что постарайтесь

convert a.png -background white -flatten removeTransparency.jpg
person fmw42    schedule 13.07.2018