Qrcode生成中间带log的二维码图片
1.引入依赖
< dependency>
< groupId> com.swetake.util</ groupId>
< artifactId> QRCode</ artifactId>
< version> 3.0</ version>
</ dependency>
2.测试
public class QRCodeUtil {
public static int createQRCode ( String content, String imgPath, String logo) {
try {
Qrcode qrcodeHandler = new Qrcode ( ) ;
qrcodeHandler. setQrcodeErrorCorrect ( 'M' ) ;
qrcodeHandler. setQrcodeEncodeMode ( 'B' ) ;
qrcodeHandler. setQrcodeVersion ( 7 ) ;
byte [ ] contentBytes = content. getBytes ( "gb2312" ) ;
BufferedImage bufImg = new BufferedImage ( 140 , 140 , BufferedImage . TYPE_INT_RGB ) ;
Graphics2D gs = bufImg. createGraphics ( ) ;
gs. setBackground ( Color . WHITE ) ;
gs. clearRect ( 0 , 0 , 140 , 140 ) ;
gs. setColor ( Color . BLACK ) ;
int pixoff = 2 ;
if ( contentBytes. length > 0 && contentBytes. length < 120 ) {
boolean [ ] [ ] codeOut = qrcodeHandler. calQrcode ( contentBytes) ;
for ( int i = 0 ; i < codeOut. length; i++ ) {
for ( int j = 0 ; j < codeOut. length; j++ ) {
if ( codeOut[ j] [ i] ) {
gs. fillRect ( j * 3 + pixoff, i * 3 + pixoff, 3 , 3 ) ;
}
}
}
} else {
System . err. println ( "QRCode content bytes length = " + contentBytes. length + " not in [ 0,120 ]. " ) ;
return - 1 ;
}
Image img = ImageIO . read ( new File ( logo) ) ;
gs. drawImage ( img, 44 , 55 , 49 , 30 , null ) ;
gs. dispose ( ) ;
bufImg. flush ( ) ;
File imgFile = new File ( imgPath) ;
ImageIO . write ( bufImg, "png" , imgFile) ;
} catch ( Exception e) {
e. printStackTrace ( ) ;
return - 100 ;
}
return 0 ;
}
public static void main ( String [ ] args) {
createQRCode ( "www.baidu.com" , "./2.jpg" , "./1.png" ) ;
}
}
3.效果