Изображение Magick ++ эквивалентно конвертировать -fill

У меня есть команда convert, которую нужно перевести в вызовы функций Image Magick.

convert.exe bar.jpg -fuzz 40% -fill «rgb (53456, 35209, 30583)» -paque «rgb (65535, 65535, 65535)» foo2.jpg

Мне было интересно, кто-нибудь может дать мне пример методов, которые мне нужно применять, чтобы получить тот же эффект?

Спасибо за любую помощь!

1

Решение

Документация для Magick ++ довольно ясно, но есть еще много примеров, использующих & MagickWand. По большей части, -заполнить это просто установка атрибута цвета, который можно применять к широкому кругу действий. В Magick ++ вы бы использовали Image.fillColor; Тем не менее Image.opaque метод меняет один цвет на другой. В дополнение к непрозрачному методу, порог цвета может быть отрегулирован путем установки -пушинка вариант с Image.colorFuzz.

C ++ & Пример Magick ++

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

using namespace std;
using namespace Magick;

int main(int argc, char **argv)
{
InitializeMagick(*argv);

// Setup items
Image image;
/*
Remember to read & understand Magick++/Color.h to
ensure you are initializing the correct color constructor.
*/
Color target = Color("rgb(65535, 65535, 65535)");
Color fill   = Color("rgb(53456, 35209, 30583)");

// Convert 40% to double
const double fuzz = 40*QuantumRange/100;

// Read image object
image.read("bar.jpg");

// Set fuzz threshold
image.colorFuzz(fuzz);

// Apply opaque paint
image.opaque(target,fill);

// Save image
image.write("foo2.jpg");

return 0;
}

С & Пример MagickWand

#include <stdio.h>
#include <wand/MagickWand.h>

int main(int argc, char **argv) {
// MagickWand items
MagickWand *image = NULL;
PixelWand *target = NULL;
PixelWand *fill   = NULL;

// Convert 40% to double
const double fuzz = 40*QuantumRange/100;

MagickWandGenesis();

// Setup Wand
target = NewPixelWand();
fill = NewPixelWand();
image = NewMagickWand();

// Load image
MagickReadImage(image,"bar.jpg");

// Set Colors
PixelSetColor(target,"rgb(65535, 65535, 65535)");
PixelSetColor(fill,"rgb(53456, 35209, 30583)");

// Apply effect(wand,0.40);
MagickOpaquePaintImage(image,target,fill,fuzz,MagickFalse);

// Save image
MagickWriteImages(image,"foo2.jpg",MagickTrue);

// Clean up
image=DestroyMagickWand(image);
MagickWandTerminus();

return 0;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]