[英]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.