5

PixelFormat列挙からピクセル長(バイト単位)を取得するにはどうすればよいですか? ネイティブ アプローチを使用して画像ピクセルを処理したいのですが、ピクセルのオフセットがわからない場合、画像を反復処理するにはどうすればよいですか。

コード:

let formRgbCube (image : Bitmap) =
    let width = image.Width
    let height = image.Height
    let bitmapData = image.LockBits(Rectangle(0, 0, image.Width, image.Height), ImageLockMode.ReadOnly, image.PixelFormat)
    let ptr = NativePtr.ofNativeInt<byte>(bitmapData.Scan0)
    let stride = bitmapData.Stride

    let rgbCube = Array3D.zeroCreate width height 3
    for i = 0 to width - 1 do
        for j = 0 to height - 1 do
            for k = 0 to 2 do
                rgbCube.[i, j, k] <- NativePtr.read<byte>(NativePtr.add ptr (stride * j + i * 3(*an example for 24ppb*) + k))
    rgbCube
4

1 に答える 1

4
Image.GetPixelFormatSize(image.PixelFormat);

指定されたピクセル形式の色深度をピクセルあたりのビット数で返します。--ドキュメント

于 2013-09-16T19:29:44.330 に答える