将QR码转换成图片。Java

3
使用以下库:qrgen-1.2、zxing-core-1.7和zxing-j2se-1.7,我生成了QRCode:
    ByteArrayOutputStream out = QRCode.from(output.toString()).withSize(1000,1000).to(ImageType.PNG).stream();
    FileOutputStream fout = new FileOutputStream(new File("D:\\QR_Code.JPG"));
    fout.write(out.toByteArray());
    fout.flush();
    fout.close();

我的意图是将代码发送到一个接受java.awt.Image的方法中。 我如何在不先创建QRCode.JPG的情况下将QRCode类的实例转换为Image类的实例?据我所见,这个库没有提供可以完成此操作的方法,那么这是否可能?也许我可以将流转换为Image?


1
我不熟悉那些库,但你可以试试这个:BufferedImage image = ImageIO.read(new ByteArrayInputStream(out.toByteArray())); (假设你说的是 java.awt.image.Image 的子类,BufferedImage - childofsoong
打错了,无法编辑某些原因 - 应该是 java.awt.Image,而不是 java.awt.image.Image - childofsoong
1个回答

0

只需将 QR 码写入字节数组输出流,然后使用流中的字节数组创建 BufferedImage

import net.glxn.qrgen.QRCode;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;

public static BufferedImage generate() {
    try {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        QRCode.from("http://www.stackoverflow.com").writeTo(baos);
        ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
        return ImageIO.read(bais);
    } catch (Exception e) {
        e.printStackTrace();
    }

    return null;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接