Originは、行列、ワークシートセル、グラフにイメージをインポートすることができます。 次のセクションは、Origin Cアプリケーションでイメージをインポートする方法を示します。
次のサンプル関数は、イメージファイルを行列にインポートする方法を示しています。 関数は、行列名、ファイル名、グレースケールの深度の3つの引数を取ります。 このサンプルで呼び出されるキーとなる関数は、oimg_image_infoおよびoimg_load_imageです。 前者はイメージファイルに含まれるイメージについての情報を取得するのに使われます。 取得した情報は、目的の行列を準備するのに使われます。 後者の関数は、グレースケールデータ値として目的の行列にイメージファイルに実際にインポートするのに使われます。
#include <import_image.h> // oimg_ functionsで必要 bool import_image_to_matrix_data( LPCSTR lpcszMatrixName, // 行列ブック名 LPCSTR lpcszFileName, // 画像ファイル名 int nGrayDepth) // 8ビットまたは16ビットのグレースケールとしてインポート { // 目的の行列オブジェクトを取得 MatrixObject mo(lpcszMatrixName); if( !mo.IsValid() ) return false; // 元のイメージ情報を取得 int nWidth, nHeight, nBPP; if( !oimg_image_info(lpcszFileName, &nWidth, &nHeight, &nBPP) ) return false; // 目的の行列を元の画像を同じ次数にセット if( !mo.SetSize(nHeight, nWidth, 0) ) return false; // 目的の行列のデータサイズ int nDataType = (16 == nGrayDepth ? FSI_USHORT : FSI_BYTE); if( !mo.SetInternalData(nDataType, FALSE, FALSE) ) return false; // イメージを行列にインポート bool bRet; if( FSI_USHORT == nDataType ) { Matrix<WORD>& mm = mo.GetDataObject(); bRet = oimg_load_image(lpcszFileName, &mm, 16, nHeight, nWidth); } else // FSI_BYTE { Matrix<BYTE>& mm = mo.GetDataObject(); bRet = oimg_load_image(lpcszFileName, &mm, 8, nHeight, nWidth); } return bRet; }
次のサンプルは、ファイルからJPEGファイルをワークシートセルに埋め込みます。 これは、WorksheetクラスのAttachPictureメソッドを使って行います。
int nRow = 0, nCol = 0; string strFile = "D:\\Graph1.jpg"; DWORD dwEmbedInfo = EMBEDGRAPH_KEEP_ASPECT_RATIO; Worksheet wks = Project.ActiveLayer(); if( wks.AttachPicture(nRow, nCol, strFile, dwEmbedInfo) ) { wks.Columns(nCol).SetWidth(20); wks.AutoSize(); }
次のサンプルは、ファイルからJPEGファイルをグラフレイヤに埋め込みます。これは、image_import_to_active_graph_layerグローバル関数を使って行われます。
#include <image_utils.h> // image_import_to_active_graph_layer関数を呼び出す前に // the image_utils.cをコンパイル LT_execute("run.LoadOC(Originlab\\image_utils.c)"); string strFile = "D:\\Graph1.jpg"; image_import_to_active_graph_layer(strFile);