Переключение сканера штрих-кода zxing в портретный режим - PullRequest
1 голос
/ 02 марта 2012

Я следую этой проблеме (http://code.google.com/p/zxing/issues/detail?id=178) и следовал инструкциям комментария № 46, но не повезло с Samsung 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: код для записи в файл

  • этот код отлично работает, если я передам байт [] перед вращением.
  • После вращения изображение становится зеленым

код

 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();
}

1 Ответ

1 голос
/ 03 марта 2012

Я полагаю, что проблема в том, что вы обрабатываете входные данные, как будто они неплоские, но это так. «Вращение» всех данных, как это не является действительным. Вы хотите только смотреть на плоскость "Y" и игнорировать данные U и V, которые следуют. Вы можете вращать бит Y, как вы делаете здесь; это самолет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...