簡體   English   中英

java Vs VB.net中的RGB顏色

[英]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代碼獲得的整數之間的差異如下:

  • 沒有區別:250178(96.5%)
  • 一個區別:7426(2.9%)
  • 兩個區別:1582(0.6%)
  • 三個區別:14(0.0%)
  • 四個或更多差異:0(0.0%)

任何人都可以向我解釋這種差異來自哪里? 是否與閱讀顏色的方式,緩沖圖像的方式或抗鋸齒之類的東西有關?

真的好奇是什么原因,thx提前

正如其他人所提到的,差異是由JPEG的有損壓縮引起的

您應該使用無損格式測試這些方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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