在某些Android设备上解码YUV Image的问题

时间:2013-05-09 11:13:17

标签: android image-processing yuv

我正在尝试使用android onPreviewFrame方法创建在线扫描程序。我已经为我创建了AsyncTask来处理图像。这是我转换方法的代码:

public Bitmap renderCroppedGreyscaleBitmap() {
    int width = getWidth();
    int height = getHeight();
    int[] pixels = new int[width * height];
    byte[] yuv = yuvData;
    int inputOffset = top * dataWidth + left;

    for (int y = 0; y < height; y++) {
            int outputOffset = y * width;
            for (int x = 0; x < width; x++) {
                int grey = yuv[inputOffset + x] & 0xff;
                pixels[outputOffset + x] = 0xFF000000 | (grey * 0x00010101);
            }
            inputOffset += dataWidth;
    }

    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
    return bitmap;
}

在某些设备上,一切都很棒,如HTC Desire HD,三星galaxy S2或三星Galaxy GT或LG-P500。某些帧以灰度正确发送到服务器并进行处理。

但在HTC One X等设备上,一切都出了问题。而不是真实的图像服务器接收这样的图像:bad image

我试图更改图像格式 - 没有任何改变(现在我使用默认格式 - NV21)。我试图使用YuvImage类和方法compressToJpeg - 没有改变。图像仍然是错误的解码。 我试图将图像保存在SD卡上,但保存的图像也已损坏。

0 个答案:

没有答案