gpt4 book ai didi

java - 使用Zxing从手机上存储的图像中解码二维码(在Android手机上)

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:07:22 24 4
gpt4 key购买 nike

我有一个从服务器接收二维码的应用程序。我想解码它(不是用 Intent 和相机)并在我的应用程序中显示它包含的文本。我已经在 J​​ava SE 中用 zxing 的 jar 和这段代码完成了这个:

 private class QRCodeDecoder {
public String decode(File imageFile) {
BufferedImage image;
try {
image = ImageIO.read(imageFile);
} catch (IOException e1) {
return "io outch";
}

// creating luminance source
LuminanceSource lumSource = new BufferedImageLuminanceSource(image);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(lumSource));

// barcode decoding
QRCodeReader reader = new QRCodeReader();

Result result = null;
try {
result = reader.decode(bitmap);
} catch (ReaderException e) {
return "reader error";
}

return result.getText();

}
}

但在 Android 上,找不到 BufferedImage。有没有人从手机上存储的图像中解码 android 上的二维码?谢谢。

最佳答案

在android中,你可以这样做:

    @Override
protected Result doInBackground(Void... params)
{
try
{
InputStream inputStream = activity.getContentResolver().openInputStream(uri);
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
if (bitmap == null)
{
Log.e(TAG, "uri is not a bitmap," + uri.toString());
return null;
}
int width = bitmap.getWidth(), height = bitmap.getHeight();
int[] pixels = new int[width * height];
bitmap.getPixels(pixels, 0, width, 0, 0, width, height);
bitmap.recycle();
bitmap = null;
RGBLuminanceSource source = new RGBLuminanceSource(width, height, pixels);
BinaryBitmap bBitmap = new BinaryBitmap(new HybridBinarizer(source));
MultiFormatReader reader = new MultiFormatReader();
try
{
Result result = reader.decode(bBitmap);
return result;
}
catch (NotFoundException e)
{
Log.e(TAG, "decode exception", e);
return null;
}
}
catch (FileNotFoundException e)
{
Log.e(TAG, "can not open file" + uri.toString(), e);
return null;
}
}

关于java - 使用Zxing从手机上存储的图像中解码二维码(在Android手机上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3422651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com