【发布时间】:2014-05-09 13:29:06
【问题描述】:
我注意到,在跨设备读取 JPEG 格式的相同照片时,像素值不匹配。它们很接近,但又不同。转换为 PNG 文件时,像素值似乎匹配。
这似乎是由于跨设备的(非)压缩算法造成的。无论如何,这就是我想到的。有没有办法读取 JPEG 文件,以便跨设备从照片中检索相同的像素?我在 BitmapFactory 选项组件中看不到选项。
当前在跨设备处理图像的像素值时应用以下内容来保持大小:
Options options = new Options();
options.inScaled = false;
options.inPreferQualityOverSpeed = true;
目前将像素与以下像素进行比较只是为了查看一些(接近匹配,但不相等):
int[] pixels = new int[bitmapF.getWidth() * bitmapF.getHeight()];
bitmapF.getPixels(pixels, 0, bitmapF.getWidth(), 0, 0, bitmapF.getWidth(), bitmapF.getHeight());
Log.d("pixel entries", "pixels = " + pixels[233] + " - " + pixels[4002] + " - " + pixels[11391]);
注意:如果读取同一个未压缩文件的 PNG 版本,则值与预期相同。
例如,三星 Galaxy S4 和三星 Galaxy S5 甚至在 assets 文件夹中存储了来自相同 jpeg(运行相同测试活动)的不同像素。
pixel[233] 例如在 s5 上为 -5205635,但在 s4 上为 -5336451。像素[4002] 也有点偏离。但是在这张 jpeg 图片上,两个设备的像素 [11391] 是相等的。
【问题讨论】: