ホーム › Graphics.Imaging › WICJpegScanHeader
WICJpegScanHeader
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| cComponents | DWORD | 4 | +0 | +0 | スキャン内のコンポーネント数です。 |
| RestartInterval | DWORD | 4 | +4 | +4 | スキャン内のリスタートマーカーの間隔です。 |
| ComponentSelectors | DWORD | 4 | +8 | +8 | コンポーネント識別子です。 |
| HuffmanTableIndices | DWORD | 4 | +12 | +12 | 量子化テーブルインデックスの形式です。IWICJpegFrameDecode Constants で説明されている次の定数のいずれかを使用します。 |
| StartSpectralSelection | BYTE | 1 | +16 | +16 | スペクトル選択の開始位置です。 |
| EndSpectralSelection | BYTE | 1 | +17 | +17 | スペクトル選択の終了位置です。 |
| SuccessiveApproximationHigh | BYTE | 1 | +18 | +18 | 逐次近似の上位ビット位置です。 |
| SuccessiveApproximationLow | BYTE | 1 | +19 | +19 | 逐次近似の下位ビット位置です。 |
公式ドキュメント
JPEG のフレームヘッダーを表します。
解説(Remarks)
画像のスキャンヘッダーを取得するには、IWICJpegFrameDecode::GetScanHeader を呼び出します。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// WICJpegScanHeader (x64 20 / x86 20 バイト)
typedef struct WICJpegScanHeader {
DWORD cComponents;
DWORD RestartInterval;
DWORD ComponentSelectors;
DWORD HuffmanTableIndices;
BYTE StartSpectralSelection;
BYTE EndSpectralSelection;
BYTE SuccessiveApproximationHigh;
BYTE SuccessiveApproximationLow;
} WICJpegScanHeader;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct WICJpegScanHeader
{
public uint cComponents;
public uint RestartInterval;
public uint ComponentSelectors;
public uint HuffmanTableIndices;
public byte StartSpectralSelection;
public byte EndSpectralSelection;
public byte SuccessiveApproximationHigh;
public byte SuccessiveApproximationLow;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure WICJpegScanHeader
Public cComponents As UInteger
Public RestartInterval As UInteger
Public ComponentSelectors As UInteger
Public HuffmanTableIndices As UInteger
Public StartSpectralSelection As Byte
Public EndSpectralSelection As Byte
Public SuccessiveApproximationHigh As Byte
Public SuccessiveApproximationLow As Byte
End Structureimport ctypes
from ctypes import wintypes
class WICJpegScanHeader(ctypes.Structure):
_fields_ = [
("cComponents", wintypes.DWORD),
("RestartInterval", wintypes.DWORD),
("ComponentSelectors", wintypes.DWORD),
("HuffmanTableIndices", wintypes.DWORD),
("StartSpectralSelection", ctypes.c_ubyte),
("EndSpectralSelection", ctypes.c_ubyte),
("SuccessiveApproximationHigh", ctypes.c_ubyte),
("SuccessiveApproximationLow", ctypes.c_ubyte),
]#[repr(C)]
pub struct WICJpegScanHeader {
pub cComponents: u32,
pub RestartInterval: u32,
pub ComponentSelectors: u32,
pub HuffmanTableIndices: u32,
pub StartSpectralSelection: u8,
pub EndSpectralSelection: u8,
pub SuccessiveApproximationHigh: u8,
pub SuccessiveApproximationLow: u8,
}import "golang.org/x/sys/windows"
type WICJpegScanHeader struct {
cComponents uint32
RestartInterval uint32
ComponentSelectors uint32
HuffmanTableIndices uint32
StartSpectralSelection byte
EndSpectralSelection byte
SuccessiveApproximationHigh byte
SuccessiveApproximationLow byte
}type
WICJpegScanHeader = record
cComponents: DWORD;
RestartInterval: DWORD;
ComponentSelectors: DWORD;
HuffmanTableIndices: DWORD;
StartSpectralSelection: Byte;
EndSpectralSelection: Byte;
SuccessiveApproximationHigh: Byte;
SuccessiveApproximationLow: Byte;
end;const WICJpegScanHeader = extern struct {
cComponents: u32,
RestartInterval: u32,
ComponentSelectors: u32,
HuffmanTableIndices: u32,
StartSpectralSelection: u8,
EndSpectralSelection: u8,
SuccessiveApproximationHigh: u8,
SuccessiveApproximationLow: u8,
};type
WICJpegScanHeader {.bycopy.} = object
cComponents: uint32
RestartInterval: uint32
ComponentSelectors: uint32
HuffmanTableIndices: uint32
StartSpectralSelection: uint8
EndSpectralSelection: uint8
SuccessiveApproximationHigh: uint8
SuccessiveApproximationLow: uint8struct WICJpegScanHeader
{
uint cComponents;
uint RestartInterval;
uint ComponentSelectors;
uint HuffmanTableIndices;
ubyte StartSpectralSelection;
ubyte EndSpectralSelection;
ubyte SuccessiveApproximationHigh;
ubyte SuccessiveApproximationLow;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; WICJpegScanHeader サイズ: 20 バイト(x64)
dim st, 5 ; 4byte整数×5(構造体サイズ 20 / 4 切り上げ)
; cComponents : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; RestartInterval : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; ComponentSelectors : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; HuffmanTableIndices : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; StartSpectralSelection : BYTE (+16, 1byte) poke st,16,値 / 値 = peek(st,16)
; EndSpectralSelection : BYTE (+17, 1byte) poke st,17,値 / 値 = peek(st,17)
; SuccessiveApproximationHigh : BYTE (+18, 1byte) poke st,18,値 / 値 = peek(st,18)
; SuccessiveApproximationLow : BYTE (+19, 1byte) poke st,19,値 / 値 = peek(st,19)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global WICJpegScanHeader
#field int cComponents
#field int RestartInterval
#field int ComponentSelectors
#field int HuffmanTableIndices
#field byte StartSpectralSelection
#field byte EndSpectralSelection
#field byte SuccessiveApproximationHigh
#field byte SuccessiveApproximationLow
#endstruct
stdim st, WICJpegScanHeader ; NSTRUCT 変数を確保
st->cComponents = 100
mes "cComponents=" + st->cComponents