==================================================
画像の取得
==================================================

画像の取得
==================================

バッファを確保し、現在のライブ画像を取得します。

まず、あらかじめ ``PUC_SetXferDataMode`` でデータ転送を圧縮モードに変更しておきます。

.. code-block:: cpp

	result = PUC_SetXferDataMode(hDevice, PUC_DATA_COMPRESSED);
	if (PUC_CHK_FAILED(result))
	{
		_tprintf(_T("PUC_SetXferDataMode error:%u\n"), result);
		return;
	}

次に、 ``PUC_GetXferDataSize`` で現在の解像度に対するデータサイズを取得します。

.. code-block:: cpp

    result = PUC_GetXferDataSize(hDevice, PUC_DATA_COMPRESSED, &nDataSize);
    if (PUC_CHK_FAILED(result))
    {
    	return;
    }

.. note::
   - 上記では圧縮画像のデータサイズを取得しています。PUC_DATA_DECOMPRESSED_GRAYを指定すると、ピクセルデータに変換後のデータサイズを取得できます。
   - PUC_GetXferDataSizeで取得したサイズでバッファを確保した場合、解像度の変更毎にバッファの再確保が必要になりますので、PUC_GetMaxXferDataSizeを使用してあらかじめ最大データサイズを確保する方法が効率的です。


次に、バッファを確保し画像を取得します。

.. code-block:: cpp

    PUC_XFER_DATA_INFO xferData = { 0 };

    xferData.pData = new UINT8[nDataSize];

    result = PUC_GetSingleXferData(hDevice, &xferData);
    if (PUC_CHK_FAILED(result))
    {
        return;
    }

.. note::
   - xferData.nDataSizeには実際に転送した画像サイズ、xferData.nSequenceNoにはシーケンス番号が格納されます。
   - 取得した画像は圧縮されているため、表示するにはデコードが必要です。

