2017-04-10 24 views
7

Tôi không có người nói tiếng Anh bản địa, vì vậy hãy bào chữa bất kỳ lỗi dịch thuật nào.Màu RGB trong java Vs VB.net

Tôi không thực sự gặp sự cố mã hóa. Đó là một câu hỏi khái niệm.

Tôi đã viết hai lần cùng một đoạn mã dịch một hình ảnh thành một danh sách các giá trị RGB. (1 kết hợp 3 giá trị cho mỗi pixel).

tôi đã viết mã đầu tiên trong VB.net sử dụng:

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 

Sau đó tôi đã viết như sau trong 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); 
    } 
} 

Kỳ vọng của tôi sẽ là để có được cùng một giá trị từ hai mảnh mã, vì chúng sử dụng cùng một hình ảnh. Tôi đã thử nó trên một hình ảnh (270x320) mà là một bức ảnh (vì vậy một quang phổ đầy màu sắc). Trước sự ngạc nhiên của tôi, tôi thấy có sự khác biệt nhỏ về giá trị RGB giữa mã VB.net và Java.

Nếu tôi so sánh java (màu đỏ) so với VB.net (màu đỏ), java (màu xanh lá cây) so với VB.net (màu xanh lá cây) và java (màu xanh) của so với VB.net (màu xanh), tôi so sánh các kết hợp 270x320x3 = 259.2k. Sự khác biệt giữa các số nguyên nhận từ VB.net và từ mã Java là như sau:

  • Không khác biệt: 250.178 (96,5%)
  • Một sự khác biệt: 7426 (2,9%)
  • Hai sự khác biệt : 1582 (0,6%)
  • Ba chênh lệch: 14 (0,0%)
  • Bốn hoặc diff hơn .: 0 (0.0%)

ai có thể giải thích cho tôi biết nơi sự khác biệt này xuất phát fro m? Nó có liên quan đến cách đọc màu sắc, cách đệm hình ảnh, hoặc với một cái gì đó như chống răng cưa?

Thật tò mò những gì lý do là, thx trước

+0

Nó _might_ là siêu dữ liệu hình ảnh cho thư viện xử lý hình ảnh thay đổi màu sắc một chút. Có thể là một thư viện tôn vinh siêu dữ liệu trong khi một thư viện khác bỏ qua nó. Ví dụ về siêu dữ liệu như vậy bao gồm hồ sơ màu ICC, giá trị hiệu chỉnh gamma, v.v. –

+1

Tiện ích mở rộng tệp là gì? –

+1

Tôi đã thử Jpeg Vs Jpeg và Jpeg so với Png –

Trả lời

1

Như đã đề cập bởi những người khác, sự khác biệt là do nén lossy JPEG của.

Bạn nên thử nghiệm các phương pháp này với định dạng không mất dữ liệu.

Các vấn đề liên quan