MatrixToImageWriter sử dụng BitMatrix, không phải ByteMatrix như được trả về bởi QRCode.getMatrix. bằng cách xem mã nguồn của android, tôi đã tìm thấy bằng chứng giải pháp khái niệm sau:
try {
MultiFormatWriter writer = new MultiFormatWriter();
Hashtable hints = new Hashtable();
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.Q);
MatrixToImageWriter.writeToFile(writer.encode("hello world", BarcodeFormat.QR_CODE, 800, 800, hints),
"png", new File("/tmp/qrcode.png"));
} catch (Exception e) {
System.out.println("failure: " + e);
}
btw áp đặt Hashtable trong API không sạch. hãy sử dụng Bản đồ. không nhiều người vẫn còn sử dụng Hashtable anyway, bạn nên hầu như luôn luôn sử dụng HashMap thay vì (ngoại trừ một vài trường hợp sử dụng).
ok cảm ơn bạn! tôi chỉ cần tạo một hình ảnh bằng cách sử dụng qrCode.getMatrix(). getArray(); – oneeyejack
Trong trường hợp bất cứ ai khác đang làm điều này, thì đó là ý tưởng cơ bản. Sử dụng Encoder.encode() để 'điền vào' các chi tiết của một QRCode mới được tạo ra. Sau đó lấy byte [] [] từ QRCode.getMatrix(). GetArray() như đã đề xuất ở trên. Mỗi dòng byte có vẻ là một hàng pixel cho QRCode, với mỗi byte là 0 hoặc 1. Tại thời điểm này, bạn chỉ có thể vẽ các pixel vào BufferedImage hoặc tạo một Raster ra khỏi nó hoặc một cái gì đó để biến nó thành một hình ảnh AWT. – CarlG
... hoặc sử dụng lớp MatrixToImageWriter được cung cấp để thực hiện tất cả điều này cho bạn! –