![](/img/trans.png)
[英]32-bit Grayscale Tiff with floating point pixel values to array using LibTIFF.NET C#
[英]Reading RGB values of a pixel with LibTiff - C#
我想在C#中讀取像素的RGB值,我嘗試使用此處的以下代碼。
int[] raster = new int[height*width];
var b = tiffreader.ReadRGBAImage(width, height, raster);
for (int i = 0; i < width; ++i)
for (int j = 0; j < height; ++j)
{
int offset = (height - j - 1) * width + i;
color.R = Tiff.GetR(raster[offset]);
color.G = Tiff.GetG(raster[offset]);
color.B = Tiff.GetB(raster[offset]);
}
但是我得知這個偏移是什么,以及當圖像是2D時為什么光柵在1D。 有人可以幫助我理解上面代碼中的偏移和柵格事物。
2D字節數組(在這種情況下,位圖)基本上仍然是“普通”1D數組,為方便起見,它允許通過兩個單獨的索引進行訪問。
例:
0123456789
0 ##########
1 **********
2 XXXXXXXXXX
3 YYYYYYYYYY
#,*,X,Y
表示每個條目中的字節
實際上(在記憶中)
##########**********XXXXXXXXXXYYYYYYYYYY
所以映射索引的公式是
int offset = i * width + j
i
是行, j
是列索引。
在這個TIFF圖像的情況下,這有點不同,因為假設原點位於左下角:
0123456789
3 ####OO####
2 ##OO##OO##
1 ##OOOOOO##
0 ##OO##OO##
從而,
int offset = (height - j - 1) * width + i;
是將兩個2D索引映射到柵格數組的1D索引的公式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.