1

Image Magick 関数呼び出しに変換する必要がある convert コマンドがあります。

convert.exe bar.jpg -fuzz 40% -fill "rgb(53456, 35209, 30583)" -opaque "rgb(65535, 65535, 65535)" foo2.jpg

同じ効果を得るために適用する必要がある方法の例を誰かが教えてくれるかどうか疑問に思っていましたか?

助けてくれてありがとう!

4

1 に答える 1

1

Magick++のドキュメントは非常に明確ですが、 & MagickWandを使用した例は他にもたくさんあります。ほとんどの場合、-fillはさまざまなアクションに適用できる色属性を設定するだけです。Magick++ では、Image.fillColorを使用します。ただし、Image.opaqueメソッドはある色を別の色に交換します。不透明な方法に加えて、 Image.colorFuzzで-fuzzオプションを設定することにより、色のしきい値を調整できます。

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;
 }

C & 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;
}
于 2013-07-08T20:55:56.623 に答える