画像のインポート
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);
|