2016-01-22 73 views
2

我有一個QR碼(文字content of qr-code)以下數據網址:解碼數據URL

data:image/gif;base64,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 

example QR code

我嘗試用斑馬線

讀取這個QR碼
String b64_data = dataUrl.substring("data:image/gif;base64,".length()); 
byte[] bin_data = Base64.decodeBase64(b64_data); 
final int imageSize = 366; 
LuminanceSource source = new PlanarYUVLuminanceSource(bin_data, imageSize, imageSize, 0, 0, imageSize, imageSize, false); 
BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(source)); 
Result result = new QRCodeReader().decode(binaryBitmap); // thows ArrayIndexOutOfBoundsException: 6954 

但是電話decode拋出ArrayIndexOutOfBoundsException: 6954

如何解碼QR碼的數據URL?

+0

你是否檢查過'imageSize = 366'? – slartidan

回答

0

我找到了一個解決方案:

String b64_data = dataUrl.substring("data:image/gif;base64,".length()); 
byte[] bin_data = Base64.decodeBase64(b64_data); 
BufferedImage image = GifDecoder.read(bin_data).getFrame(0); 
LuminanceSource source = new BufferedImageLuminanceSource(image) 
BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(source)); 
Map<DecodeHintType, Object> hints = new HashMap<>(); 
hints.put(DecodeHintType.PURE_BARCODE, true); 
Result result = new QRCodeReader().decode(binaryBitmap, hints); 

我必須使用GifDecoder因爲javax.imageio.ImageIO拋出ArrayIndexOutOfBoundsException(見bug)。 PURE_BARCODE是檢測QR碼所必需的。