JavaでQRコードをデコードする方法を探して見つけた。
http://qrcode.sourceforge.jp/ のライブラリにある QRCodeDecoder を使う。
これは、読む込んだQR画像データを java.awt.image.BufferedImage として扱うことで座標データを
QRコード解析に渡す。それをインターフェース、jp.sourceforge.qrcode.data.QRCodeImage というもので約束する。
サンプルでは、この QRCodeImage 実装クラスをわざわざ書いてあったが以下のように書いても良さそうである。
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.imageio.ImageIO;
import jp.sourceforge.qrcode.QRCodeDecoder;
import jp.sourceforge.qrcode.data.QRCodeImage;
:
:
final BufferedImage bufferedImage = ImageIO.read(new FileInputStream(new File("test.png")));
QRCodeDecoder decoder = new QRCodeDecoder();
byte[] decodedBytes = decoder.decode(new QRCodeImage(){
@Override
public int getHeight(){
return bufferedImage.getHeight();
}
@Override
public int getPixel(int x,int y){
return bufferedImage.getRGB(x,y);
}
@Override
public int getWidth(){
return bufferedImage.getWidth();
}
});
System.out.println(new String(decodedBytes));