dsc_GetImageMem

静止画キャプチャデータをDIB形式でメモリに格納

dsc_GetImageMem data,size,head

data	: DIBを格納する変数
size	: DIBサイズを格納する変数
head	: ヘッダを格納する変数

(プラグイン / モジュール : hspdsc.dll)

解説

静止画キャプチャデータをDIB形式でメモリに格納します。
あらかじめ、DIBとヘッダのメモリをsdim などで確保してください。
サイズは dsc_GetImageMemSize() 関数で調べることができます。

ヘッダは BITMAPINFO 構造体と同じです。

サンプル

// SetDIBitsToDevice は gdi32.as に記述されています。

	sdim dibdata, dsc_GetImageMemSize(0)+1	; 下の対策のため +1
	sdim dibhead, dsc_GetImageMemSize(1)
	
	dibsize = dsc_GetImageMemSize(0)
	dsc_GetImageMem dibdata, dibsize, dibhead

	// 取得した画像の X ,Y サイズ
	x=lpeek(dibhead,4)
	y=lpeek(dibhead,8)

	// 元の画像
	screen 2,x,y : title "元の画像"
	SetDIBitsToDevice hdc,0,0,x,y,0,0,0,y,varptr(dibdata),varptr(dibhead),0
	redraw
	
	// 白黒化処理
	repeat dibsize/3 /* 24bit Color */
		// 閾値 チェック
		if peek(dibdata,cnt*3+2) > 160 { /* DIB は RGB ではなく BGR 順 */
			// 4byte ずつ 書き込みするため 確保バッファあらかじめ +1 する
			lpoke dibdata,cnt*3,16777215 
		}else{
			lpoke dibdata,cnt*3,0
		}
	loop

	// 加工後の画像
	screen 3,x,y : title "加工後の画像"
	SetDIBitsToDevice hdc,0,0,x,y,0,0,0,y,varptr(dibdata),varptr(dibhead),0
	redraw

関連項目

dsc_GetImageMemSizeDIB および ヘッダ のデータサイズを取得(関数)(hspdsc.dll)
dsc_GetImage静止画キャプチャし画像をウィンドウに転送(hspdsc.dll)
dsc_SaveBMP静止画キャプチャ画像をBMPで保存します(hspdsc.dll)
dsc_SetCapConfig静止画キャプチャーを利用可能にします(hspdsc.dll)
dsc_SaveImage静止画キャプチャ画像を対応した画像形式で保存します(hspdsc.dll)

サンプル逆引き (6)

(HSP3) sample11 [MP4形式でキャプチャを保存する].hsp
(HSP3) sample11 [MP4形式でキャプチャを保存する]_x64.hsp
(HSP3) sample4 [モノクロでキャプチャする].hsp
(HSP3) sample4 [モノクロでキャプチャする]_x64★.hsp
(HSP3) sample8 [Webカメラ版 バーコード・QRコード読み取り].hsp
(HSP3) sample8 [Webカメラ版 バーコード・QRコード読み取り]_x64.hsp

情報

プラグイン / モジュールhspdsc.dll
バージョン2.13
作成日2021/6/13
著作者イノビア(inovia)
URLhttps://hsp.moe/
備考HSP向け DirectShow キャプチャプラグイン

【32bit版ランタイムの場合】
hspdsc.asをインクルード
バーコードを使用する場合はhspbar.asをインクルード

【64bit版ランタイムの場合】
hsp3_64.asをインクルード
hspdsc64.asをインクルード
バーコードを使用する場合はhspbar64.asをインクルード
グループDirectShowキャプチャ命令
対応環境
  • その他 : Windows 7 以降、DirectX 11以上
移植のヒントWindows
hs ファイルhsphelp\hspdsc.hs