C言語でのMagickWandの例

これらのページにあるプログラムは、ImageMagickのMagickWand APIの使用方法を示しています。各例は、ヘッダーを含めてC関数として提示されており、ファイルにコピーして、ご自身のCプロジェクトに含めることができます。このコードはWindows向けに作成され、MSVC V7でコンパイルされていますが、多少の調整でLinuxでも実行できるはずです。

一部の例では、コマンドラインの「プログラム」と、MagickWandを使用して同等の出力を実現する方法を示しています。「同等」とは、プログラムがコマンドラインの例と同じ画像を生成することを意味します。convertプログラムでの実現方法とまったく同じである必要はありません。複製するコマンドラインの例が1つしかない場合もあれば、相互に積み重ねて最終結果を生成する3つまたは4つのコマンドがある場合もあります。ほとんどの場合、すべてのコマンドを複製する1つのC関数を作成しましたが、コードの各セクションでは、元のコマンドとの関連性を示します。

例ではエラーチェックはほとんどまたはまったく行われていませんが、必要に応じて独自のエラーチェックを追加する必要があります。たとえば、MagickReadImage関数は、読み込みが成功したかどうかに応じてtrueまたはfalseの値を返すため、次のようなコードを使用してこれを確認する必要があります。

 if(MagickReadImage(mw,"logo_gel.png") == MagickFalse) {
        // エラー処理
 }

多くのMagickWand関数がbooleanの結果を返すように宣言されていますが、常にMagickTrueを返すため、チェックする価値がないことに注意してください。これは、DrawingWandコマンドでは特に当てはまります。たとえば、DrawSetFontが指定したフォントを見つけられなくても、フォントをデフォルトのシステムフォントに設定するため、MagickTrueを返します。

MagickWandを初めて使用する場合は、次のような簡単なものから始めることをお勧めします。

      logo_1.c     簡単なスターター。組み込みのlogo:画像をJPGに変換します。

これを自分の入力ファイルを別の形式に変換するには、"logo:"を入力ファイル名に置き換え、"logo.jpg"を希望する出力ファイル名に置き換えるだけで簡単に行えることがわかります。

MagickReadImage関数は非常に多用途です。インターネット上のどこかの画像にリンクするWebサイトのURLを受け入れたり、"xc:"ファイル名の規約を使用してプレーンな色のキャンバスを生成したりできます。例: "xc:red"は赤いキャンバスを作成し、"xc:none"は透明なキャンバスを作成します。"xc:"形式を使用する場合は、通常、MagickSetSizeの呼び出しをread関数の前に行わないと、1x1ピクセルの画像になります。ImageMagick Formatsページの最後の方にある「疑似画像」と「組み込み画像」セクションを読んで、他の疑似ファイルが利用可能かどうかを確認することをお勧めします。

MagickWandの代わりにMagickCoreを使用するかどうかを検討している場合は、まず前の段落で示した簡単な例を見てから、MagickCore用に書かれた同等の例を見てください。

      MagickCore.c     MagickCore用に書かれた簡単なスタータープログラム。

この簡単な例でさえ、MagickWandバージョンの方が読みやすく書きやすいことに同意すると思います。

このコードはすべて、いかなる種類の保証や保証もなしに、現状有姿で提供されています

透明な画像を見やすくするために、各画像は灰色の背景で表示されています

各例で使用されているMagickWand関数のインデックスはこちらです

ランチョスフィルターを使用して画像を50%にサイズ変更し、高品質のJPGとして保存します。
      resize.c
      画像

画像の周りのキャンバスを拡張します。
      extent.c
      画像

画像を白背景から透明に変更する簡単な塗りつぶし。
      floodfill.c
      画像

少し複雑な塗りつぶし(マスクを使ったシンプルな背景の3番目の例と同様)
      cyclops.c
      画像

合成領域を制限するためのクリップマスクの使用
      clipmask.c

すべて*の*白いピクセルを透明に変更します。魔法使いのひげも透明になります!
      trans_paint.c
      画像

図形の描画:円、多角形、丸みを帯びた長方形、回転および変換された楕円、線
      draw_shapes.c
      画像

1つの関数での8つのテキスト効果
      text_effects.c
     
      パターン
      円弧
      ベベル
      プレーン
      バレル
      極座標
      シェパード

フォントメトリクスを楽しもう!
      fontmetrics.c
      画像

丸みを帯びた境界線の例と同様の、丸みを帯びた長方形マスクを作成します。
      round_mask.c
      画像

入力画像からタイル可能な画像を作成します。
      make_tile.c
      プラズマ
      ランダム

より良い3Dロゴ生成の例
      3dlogo.c
     
      背景

「ジェル」効果の例
      gel.c
      画像

画像の下に反射を追加します。CopyOpacityを使用して反射を透明にフェードさせます。
      reflect.c
      画像

アフィン変換を行うためのMagickDistortImageの使用例を4つ
      affine.c
      画像
      画像
      画像
      画像

PixelIteratorsを使用してグレースケールグラデーションを作成する
      grayscale.c
      画像

PixelIteratorsを使用して画像を作成、読み取り、HSL/HSBカラースペース変換を行う
      modulate.c
      画像
      画像

2D画像を疑似3Dに変換する
      landscape_3d.c
      画像

Anthonyのティルトシフトの例
      tilt_shift.c
      入力画像
      出力画像

logo:組み込み画像の1つのピクセルの色を変更する
      pixel_mod.c
      logo_pixel.gif

クリアされたフレームアニメーションに静的な背景を追加する
      bunny.c
      背景画像
      アニメーション
      出力画像


 

 

 

ご意見がありましたら、こちらまでお送りください:

またはImageMagickフォーラムで私にプライベートメッセージを送ってください