使用zxing 生成二维码,margin 设置为0。但是还存在内边距,网上有很多的处理办法都是在zxing源码的基础上操作.实践意义不大!
public static BufferedImage cropImage(BufferedImage bufferedImage) {
int cropColor = bufferedImage.getRGB(0, 0);
int width = 0, height = 0;
label:
for (int i = 0; i < bufferedImage.getWidth(); i++) {
for (int j = 0; j < bufferedImage.getHeight(); j++) {
if (bufferedImage.getRGB(i, j) != cropColor) {
width = i;
height = j;
break label;
}
}
}
//多预留1px
width--;
height--;
//裁剪图片时留下1像素点的位置,光秃秃的实在难看
bufferedImage = bufferedImage.getSubimage(width, height, bufferedImage.getWidth() - (width * 2), bufferedImage.getHeight() - (height * 2));
return bufferedImage;
}
因为二维码是双色图,最外层是第一个像素就是二维码的背景通常都是白色。里面黑色的是二维码的主体颜色,通常都是白色!那么我们获取到第一个白色像素的位置到里面第一个黑色像素的位置。使用BufferedImage将其裁剪就能获取到没有margin的二维码图片了!效果如下



