android - Android Bitmap.getPixels()从BufferedImage.getRGB()返回不同的数据

标签 android bitmap bufferedimage

我已经生成了测试条形码图像,



http://generator.onbarcode.com/linear.aspx?TYPE=7&DATA=ID%3ao0123456789&UOM=0&X=1&Y=60&LEFT-MARGIN=0&RIGHT-MARGIN=0&TOP-MARGIN=0&BOTTOM-MARGIN=0&RESOLUTION=0&ROTATE=0&BARCODE-WIDTH=0&BARCODE-HEIGHT=0&SHOW-TEXT=true&TEXT-FONT=Arial|9|Regular&TextMargin=6&FORMAT=png&PROCESS-TILDE=false

我将其保存在本地,并尝试使用简单的Java程序加载它,并打印出第一条扫描线,如下所示:

File bmpFile = new File("barcode.bmp");
BufferedImage img;
try {
    img = ImageIO.read(bmpFile);
    int[] pixels = img.getRGB(0, 0, img.getWidth(), img.getHeight(), null, 0, img.getWidth());
    int w = img.getWidth();
    for (int i = 0; i< w; i++) {
        System.out.print(pixels[i]+", ");
    }
    System.out.println();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}


然后我尝试使用以下代码在模拟器上的Android应用程序中加载位图

Bitmap barcode = BitmapFactory.decodeResource(context.getResources(), R.raw.barcode);
Config cfg = globe.getConfig();
int w = barcode.getWidth();

for (int i = 0; i < w; i++) {
    int color = barcode.getPixel(i, 0);
    System.out.print(color+", ");
}
System.out.println();


令人难以置信的是,这两个简单的应用程序必须具有完全不同的扫描线数据。

Java程序中的scanline数据:

-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-16777216,-16777216,-1,-16777216,-1,-1,-16777216 ,-1,-1,-1,-1,-16777216,-16777216,-1,-1,-1,-16777216,-1,-1,-1,-16777216,-1,-16777216,- 1,-16777216,-16777216,-1,-1,-1,-16777216,-1,-1,-1,-16777216,-16777216,-16777216,-1,-1,-16777216,-1, -1,-16777216,-16777216,-1,-16777216,-1,-1,-1,-16777216,-16777216,-16777216,-16777216,-1,-16777216,-1,-16777216,-1 ,-16777216,-16777216,-16777216,-1,-16777216,-16777216,-16777216,-16777216,-1,-16777216,-16777216,-1,-1,-16777216,-16777216,-1,- 16777216,-16777216,-1,-1,-16777216,-16777216,-16777216,-1,-16777216,-16777216,-1,-16777216,-16777216,-16777216,-1,-16777216,-1, -16777216,-16777216,-16777216,-1,-16777216,-16777216,-1,-1,-1,-16777216,-1,-1,-1,-1,-1,-16777216,-1,-16777216 ,-16777216,-1,-1,-16777216,-16777216,-1,-16777216,-16777216,-1,-16777216,-16777216,-16777216,-16777216,-1,-16777216,-1,- 16777216,-1 6777216,-1,-1,-1,-16777216,-1,-1,-1,-16777216,-16777216,-1,-1,-1,-16777216,-16777216,-16777216,-1, -16777216,-1,-16777216,-16777216,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,

来自Android应用程序的Scanline数据:

-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2170914,-13026247,-16777216 ,-15197160,-4342083,-7565684,-15197160,-4342083,-1,-2170914,-13026247,-9736853,-1,-1,-1,-1,-1,-7565684,-16777216,- 16777216,-9736853,-1,-1,-1,-1052689,-13026247,-9736853,-1,-1,-1,-1052689,-13026247,-10855078,-1052689,-13026247,-10855078, -1052689,-13026247,-16777216,-16249848,-4342083,-1,-1,-1,-6512996,-16249848,-4342083,-1,-1,-1,-6512996,-16777216,-16777216 ,-16777216,-16249848,-5394771,-1,-1052689,-11907766,-10855078,-1,-1,-6512996,-16777216,-16777216,-10855078,-1,-11907766,-10855078,- 1,-1,-1,-1,-11907766,-16777216,-16777216,-16777216,-16777216,-16777216,-5394771,-5394771,-16777216,-5394771,-5394771,-16777216,-5394771, -5394771,-16777216,-16777216,-16777216,-16777216,-5394771,-5394771,-16777216,-16777216,-16777216,-16777216,-16777216,-11907766,-1,-10855078,-16777216,-16777216 ,-6512996,-1,-1,-10855078, -16777216,-16777216,-6512996,-5394771,-16249848,-16777216,-11907766,-1052689,-1,-5394771,-16249848,-16777216,-16777216,-16777216,-6512996,-5394771,-16249848 ,-16777216,-13026247,-1052689,-10855078,-16777216,-16777216,-16777216,-13026247,-1052689,-10855078,-13026247,-1052689,-10855078,-16777216,-16777216,-16777216,- 13026247,-1052689,-9736853,-16777216,-16777216,-7565684,-1,-1,-1,-4342083,-16249848,-7565684,-1,-1,-1,-1,-1,-1, -9736853,-13026247,-2170914,-9736853,-16777216,-16777216,-7565684,-1,-1,-9736853,-16777216,-16777216,-7565684,-4342083,-15197160,-16777216,-14078935 ,-2170914,-9736853,-16777216,-16777216,-16777216,-16777216,-16777216,-7565684,-3223602,-15197160,-7565684,-3223602,-15197160,-16777216,-14078935,-2170914,- 1,-1,-1,-8684165,-14078935,-2170914,-1,-1,-1,-8684165,-16777216,-16777216,-8684165,-1,-1,-1,-3223602, -14078935,-16777216,-16777216,-16777216,-8684165,-3223602,-1407893 5,-8684165,-3223602,-14078935,-16777216,-15197160,-3223602,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,

在我看来,来自Java程序的scanline数据更加合理。在Android应用程序中,我尝试将位图放在res / drawable /和res / raw /下,但是返回的是相同的扫描线数据。有人可以启发我怎么发生吗?

最佳答案

您要从drawables文件夹加载位图吗?我有一个问题,在某些情况下,在某些设备上,位图会稍作更改。我通过将位图资源放在原始文件夹中解决了

关于android - Android Bitmap.getPixels()从BufferedImage.getRGB()返回不同的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7827677/

相关文章:

java - 按钮在布局中不起作用

android - 如何在android中调试wpa_supplicant?

android - 在 Android 中的 Canvas 上显示位图图像的一部分

java - 如何计算java BufferedImage文件大小

Android:Activity.onPause() 之后的点击事件

java - 如何使用 KSOAP2 从 Web 服务获取文件的一部分并创建 zip?

c - 获取 BitMap 中设置的位列表

android - 无法在android中将矢量可绘制对象转换为位图可绘制对象

java - 如何随机交换图像的像素?

java - 如何将 "Player image"添加到 Java 中?