7
我不是英語母語的人,所以請原諒任何翻譯錯誤。java中的RGB顏色與VB.net
我真的沒有編碼問題。這更多是一個概念性問題。
我寫了兩次相同的一段代碼,將圖像轉換爲RGB值列表。 (每個像素3個值的組合)。
我首先使用寫的代碼在VB.net:
Dim bmp As New Bitmap(File)
For x As Integer = 0 To w - 1
For y As Integer = 0 To h - 1
Dim c As Color = bmp.GetPixel(x, y)
Dim Red as integer = c.R
Dim Green as integer = c.G
Dim Blue as integer = c.B
Next y
next x
後來我寫在Java中如下:
BufferedImage image = ImageIO.read(new File(File))
for (int i = 0; i < w; i++) {
for (int j = 0; j < h; j++) {
int pixel = image.getRGB(i,j);
int Red = ((pixel >> 16) & 0xff);
int Green = ((pixel >> 8) & 0xff);
int Blue = ((pixel) & 0xff);
}
}
我的預期是從的兩件得到相同的值代碼,因爲他們使用相同的圖像。我在一張照片(270x320)上拍了一張照片(所以顏色很豐富)。令我驚訝的是,我發現VB.net和Java代碼之間的RGB值有微小差異。如果我比較java(紅色)和VB.net(紅色),java(綠色)與VB.net(綠色)和java(藍色)的比較與VB.net(藍色)相比,我比較270x320x3 = 259.2k的組合。從VB.net和Java代碼得到整數之間的區別如下:
- 沒有區別:250178(96.5%)
- 一個區別:7426(2.9%)
- 兩個差:1582(0.6%)
- 三差:14(0.0%)
- 四個或更多DIFF:0(0.0%)
誰能給我解釋一下該差分來回回M&它與閱讀顏色的方式,緩衝圖像的方式或類似抗鋸齒的方式有關嗎?
真的很好奇,是什麼原因,提前
它可能是告訴圖像處理庫稍微改變顏色的圖像元數據。可能是一個圖書館讚美元數據,而其他圖書館忽略它。此類元數據的示例包括ICC顏色配置文件,伽馬校正值等。 –
什麼是文件擴展名? –
我試過Jpeg Vs Jpeg和Jpeg與Png –