實際上,我不明白在PNG文件中使用sBIT塊。PNG文件中sBIT塊的用途是什麼?
我存儲從11位/通道RGB源PNG文件,所以我忠實地設置SBIT塊在我的(c)中的代碼:
...
png_color_8 sig_bit;
sig_bit.gray = 0;
sig_bit.alpha = 0;
sig_bit.red = 11;
sig_bit.green = 11;
sig_bit.blue = 11;
png_set_sBIT(png_ptr, info_ptr, &sig_bit);
...
/* save the png */
當圖像被觀看的觀察者視窗(天然Vista的圖片瀏覽器/ Paint.net),低8位被截斷,所以我只能看到高3位。我認爲sBIT
塊會自動指示讀者左移像素5位,以MSB爲數據顯示。似乎並非如此。
當我打開我的代碼,具有或不具有SBIT塊,並做PNG文件如下:
png_color_8p sig_bit;
if (png_get_valid(png_ptr, info_ptr, PNG_INFO_sBIT)) {
png_get_sBIT(png_ptr, info_ptr, &sig_bit);
png_set_shift(png_ptr, sig_bit);
}
的像素數據是一樣的。
什麼是sBIT塊的使用模型?我能以某種方式將sBIT
塊用於MSB,以驗證像素數據是否適合查看,但請參閱「原始」數據以進行數值分析?
IHDR塊中指定的位深度是多少? [sBIT不允許超過該值](http://www.w3.org/TR/PNG/#11sBIT);如果你沒有使用16位的深度,那可能是因爲它沒有按照你的意圖工作。 – 2012-02-29 17:49:00
@MichaelMadsen 16:I ST的IHDR用'png_set_IHDR(img-> P,img-> I,寬度,高度,如圖16所示,PNG_COLOR_TYPE_RGB,PNG_INTERLACE_NONE,PNG_COMPRESSION_TYPE_DEFAULT,PNG_FILTER_TYPE_DEFAULT);基於你貼的鏈接' – Jamie 2012-02-29 17:55:54
@MichaelMadsen,我被迫想知道:'sBIT'塊只是一種提供掩碼的手段嗎? – Jamie 2012-02-29 17:57:50