[英]RGB colors in java Vs VB.net
我不是母語為英語的人,所以請原諒任何翻譯錯誤。
我真的沒有編碼問題。 這更像是一個概念性問題。
我寫了兩次相同的代碼片段,將圖像轉換為RGB值列表。 (每個像素的3個值的1個組合)。
我首先在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(blue)我比較270x320x3 = 259.2k組合。 從VB.net和Java代碼獲得的整數之間的差異如下:
任何人都可以向我解釋這種差異來自哪里? 是否與閱讀顏色的方式,緩沖圖像的方式或抗鋸齒之類的東西有關?
真的好奇是什么原因,thx提前
正如其他人所提到的,差異是由JPEG的有損壓縮引起的。
您應該使用無損格式測試這些方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.