簡體   English   中英

使用LibTiff讀取像素的RGB值 - 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM