android - 将 zxing 条码扫描器切换到纵向模式

标签 android barcode zxing portrait

我正在关注这个问题 (http://code.google.com/p/zxing/issues/detail?id=178) 并按照评论 #46 的说明进行操作,但三星 galaxy s 2 不走运。

我已经在 DecodeHandler.java 中记录了旋转后接收到的图像 一件奇怪的事情发生了。图像似乎经过旋转校正,但它上面有一个绿色滤镜(请检查下面的文件)。

enter image description here

有没有人遇到过这种情况或对此有解决方案?

byte[] rotatedData = new byte[data.length];
for (int y = 0; y < height; y++) {
    for (int x = 0; x < width; x++)
        rotatedData[x * height + height - y - 1] = data[x + y * width];
}
int tmp = width; // Here we are swapping, that's the difference to #11
width = height;
height = tmp;
data = rotatedData;

PS:写入文件的代码

  • 如果我在进行旋转之前传递 byte[],则此代码效果很好。
  • 旋转后图像变为绿色

代码

 public void writeFile(byte[] data, 
                    String fileName, 
                    int width, int height) 
                    throws IOException{
  FileOutputStream out = new FileOutputStream(fileName);          
  YuvImage im = new YuvImage(data, ImageFormat.NV21, width,
          height, null);
    Rect r = new Rect(0,0,width,height);        
    im.compressToJpeg(r, 100, out);

  out.write(data);
  out.close();
}

最佳答案

我认为问题在于您将输入数据视为非平面数据,但事实并非如此。像这样“旋转”所有数据是无效的。您只想查看“Y”平面而忽略后面的 U 和 V 数据。您可以像这里一样旋转 Y 位;这是一架飞机。

关于android - 将 zxing 条码扫描器切换到纵向模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9539351/

相关文章:

c# - 如何从 .NET 创建/打印 DataMatrix 条码

android - 如何在 AsyncTask 的弹出窗口中打开 WebView

java - 在 SaveInstanceState 上保存和恢复 ArrayDeque

.net - 在ASP.NET MVC中生成QR代码

android - 如何更改 ZXingScannerView 默认外观?

java - 使用具有大数据的 ZXing 库生成条码时遇到问题

java - Web 服务响应中的 QR 码

java - 如何在Windows 8机器上设置zxing库?

android - 使用webview崩溃播放Youtube

android - kitkat 中的 CardView 和 RecyclerView