画像のインポート


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