ImageMagick
画像を作成および変換するためのオープン ソース C ライブラリ
無料の C API を使用してビットマップ画像を作成、編集、構成、読み取り、変換します。 C アプリ内で画像のサイズ変更、反転、ミラーリング、回転、ゆがみ、せん断、変換を行うことができます。
ImageMagick は、ソフトウェア開発者が独自の C アプリケーション内に画像処理機能を組み込むことができるオープン ソース ライブラリです。このライブラリはクロスプラットフォームであり、Linux、Windows、Mac Os X、iOS、Android OS、およびその他多くの環境でスムーズに実行できます。 C コードを使用したラスター イメージの読み取り、表示、作成、変換、変更、および変更のサポートが含まれています。
ImageMagick の優れた機能の 1 つは、さまざまな主要なファイル形式間で画像を正確かつ専門的に変換できることです。このライブラリには、JPEG、PNG、GIF、HEIC、Exif、TIFF、CGM、DPX、EXR、WebP、Postscript、PDF、SVG など、200 を超える画像ファイル形式のサポートが含まれています。このライブラリは、描画だけでなく、グラフィックスやアニメーション グラフィックスも簡単にサポートしています。
このライブラリは非常に機能が豊富で、画像のサイズ変更と反転、画像のミラーリングと回転、画像の歪み、変換、画像の色調整、さまざまな特殊効果のぼかしまたはシャープ化またはしきい値の適用、画像のグラデーションなど、いくつかの一般的な画像処理機能のサポートが含まれています。 、キャニーエッジ検出は、数式などを使用して、テキスト、線、多角形、楕円を描画します。最近、このライブラリには、OCR を使用して画像からテキストを抽出するためのサポートも含まれています。
ImageMagick の概要
次のコマンドを使用して最新のソースを複製します
GitHub から ImageMagick をインストールします。
git clone https://github.com/ImageMagick/ImageMagick.git
または、次のコマンドを使用してインストールします。
RPM 経由で ImageMagick をインストールします。
$ rpm -Uvh ImageMagick-libs-7.0.10-60.x86_64.rpm
画像を他の形式に変換
オープン ソースの C ライブラリ ImageMagick を使用すると、ソフトウェア プログラマーは、独自のアプリ内で画像をサポートされている他のファイル形式に変換できます。ユーザーは、別の形式に変換する前に形式パラメーターを指定する必要があります。ライブラリは、変換を適用する前に、画像を内部的に他の形式に変換します。このライブラリは、BMP、CMYK、GIF、JPEG、PBM、PNG、RGB、SVG、TIFF、XPM 形式など、いくつかの一般的な画像形式への変換をサポートしています。このライブラリの優れた点の 1 つは、画像を変換する際の使いやすさです。また、画像のサイズを縮小し、目的の形式で書き込む前にさまざまな効果を適用する機能も提供します。
GIFをJPEGに変換 ImageMagick によるイメージ
#include
using namespace std;
using namespace Magick;
int main(int argc,char **argv)
{
InitializeMagick(*argv);
// Read GIF file from disk
Image image( "giraffe.gif" );
// Write to BLOB in JPEG format
Blob blob;
image.magick( "JPEG" ) // Set JPEG output format
image.write( &blob );
[ Use BLOB data (in JPEG format) here ]
return 0;
}
C API を使用した画像勾配のサポート
オープン ソースの C ライブラリ ImageMagick を使用すると、ソフトウェア開発者は C コマンドを使用して複数の色の画像グラデーションを作成できます。水平、垂直、円形、または楕円形を使用して、1 つまたは複数の色の段階的なブレンドを簡単に作成できます。ライブラリは、線形グラデーションの方向を指定する、放射状グラデーションの中心点の座標を特定する、グラデーションを画像の寸法よりも大きいまたは小さい領域に制限するなど、いくつかの定義を使用してグラデーションを強化しました。の上。さらに、非線形グレースケール グラデーションの場合は、出力を保存する前に -colorspace RGB -colorspace gray を追加してください。
シンプルなグレースケールグラデーションをC APIで作成
void test_wand(LPTSTR lpCmdLine)
{
MagickWand *m_wand = NULL;
PixelWand *p_wand = NULL;
PixelIterator *iterator = NULL;
PixelWand **pixels = NULL;
int x,y,gray;
char hex[128];
MagickWandGenesis();
p_wand = NewPixelWand();
PixelSetColor(p_wand,"white");
m_wand = NewMagickWand();
// Create a 100x100 image with a default of white
MagickNewImage(m_wand,100,100,p_wand);
// Get a new pixel iterator
iterator=NewPixelIterator(m_wand);
for(y=0;y<100;y++) {
// Get the next row of the image as an array of PixelWands
pixels=PixelGetNextIteratorRow(iterator,&x);
// Set the row of wands to a simple gray scale gradient
for(x=0;x<100;x++) {
gray = x*255/100;
sprintf(hex,"#%02x%02x%02x",gray,gray,gray);
PixelSetColor(pixels[x],hex);
}
// Sync writes the pixels back to the m_wand
PixelSyncIterator(iterator);
}
MagickWriteImage(m_wand,"bits_demo.gif");
// Clean up
iterator=DestroyPixelIterator(iterator);
DestroyMagickWand(m_wand);
MagickWandTerminus();
}
C 経由で画像に特殊効果を適用する
オープン ソースの C ライブラリ ImageMagick には、さまざまな種類の効果を画像に適用する機能が用意されています。数行の C コードを使用して、ぼかし、シャープ化、しきい値、影の作成、形状のぼかし、画像の色付けなど、いくつかの重要な機能を提供しています。ラジオ ブラーやモーション ブラーなどの特別なブラー エフェクトもサポートされています。
C APIでFiled FontEffectを適用
magick_wand = NewMagickWand();
d_wand = NewDrawingWand();
p_wand = NewPixelWand();
set_tile_pattern(d_wand,"#check","pattern:checkerboard");
PixelSetColor(p_wand,"lightblue");
// Create a new transparent image
MagickNewImage(magick_wand,320,100,p_wand);
// Set up a 72 point font
DrawSetFont (d_wand, "Verdana-Bold-Italic" ) ;
DrawSetFontSize(d_wand,72);
// Now draw the text
DrawAnnotation(d_wand,28,68,"Magick");
// Draw the image on to the magick_wand
MagickDrawImage(magick_wand,d_wand);
// Trim the image
MagickTrimImage(magick_wand,0);
// Add a transparent border
PixelSetColor(p_wand,"lightblue");
MagickBorderImage(magick_wand,p_wand,5,5);
// and write it
MagickWriteImage(magick_wand,"text_pattern.png");
大きな画像のサポート
C ライブラリ ImageMagick は、非常に大きな画像の操作をサポートしています。これにより、開発者は、独自の画像処理アプリケーション内で最大メガ、ギガ、またはテラ ピクセル サイズの画像を開き、読み取り、処理、または書き込むことができます。このライブラリを使用すると、画像を 25 万ピクセルの正方形にサイズ変更できます。大きな画像を扱うときは、大きなメモリ リソースが利用できることを確認する必要があります。デフォルトの一時ディスク パーティションが小さい場合は、ImageMagick が十分な空き容量のある別のパーティションを使用するようにします。