La lecture de QRCode avec Zxing en Java
Quelques questions sur l'utilisation de Zxing...
J'écris le code suivant pour lire les codes-barres à partir d'une image:
public class BarCodeDecode
{
/**
* @param args
*/
public static void main(String[] args)
{
try
{
String tmpImgFile = "D:\\FormCode128.TIF";
Map<DecodeHintType,Object> tmpHintsMap = new EnumMap<DecodeHintType, Object>(DecodeHintType.class);
tmpHintsMap.put(DecodeHintType.TRY_HARDER, Boolean.TRUE);
tmpHintsMap.put(DecodeHintType.POSSIBLE_FORMATS, EnumSet.allOf(BarcodeFormat.class));
tmpHintsMap.put(DecodeHintType.PURE_BARCODE, Boolean.FALSE);
File tmpFile = new File(tmpImgFile);
String tmpRetString = BarCodeUtil.decode(tmpFile, tmpHintsMap);
//String tmpRetString = BarCodeUtil.decode(tmpFile, null);
System.out.println(tmpRetString);
}
catch (Exception tmpExpt)
{
System.out.println("main: " + "Excpt err! (" + tmpExpt.getMessage() + ")");
}
System.out.println("main: " + "Program end.");
}
}
public class BarCodeUtil
{
private static BarcodeFormat DEFAULT_BARCODE_FORMAT = BarcodeFormat.CODE_128;
/**
* Decode method used to read image or barcode itself, and recognize the barcode,
* get the encoded contents and returns it.
* @param whatFile image that need to be read.
* @param config configuration used when reading the barcode.
* @return decoded results from barcode.
*/
public static String decode(File whatFile, Map<DecodeHintType, Object> whatHints) throws Exception
{
//check the required parameters
if (whatFile == null || whatFile.getName().trim().isEmpty())
throw new IllegalArgumentException("File not found, or invalid file name.");
BufferedImage tmpBfrImage;
try
{
tmpBfrImage = ImageIO.read(whatFile);
}
catch (IOException tmpIoe)
{
throw new Exception(tmpIoe.getMessage());
}
if (tmpBfrImage == null)
throw new IllegalArgumentException("Could not decode image.");
LuminanceSource tmpSource = new BufferedImageLuminanceSource(tmpBfrImage);
BinaryBitmap tmpBitmap = new BinaryBitmap(new HybridBinarizer(tmpSource));
MultiFormatReader tmpBarcodeReader = new MultiFormatReader();
Result tmpResult;
String tmpFinalResult;
try
{
if (whatHints != null && ! whatHints.isEmpty())
tmpResult = tmpBarcodeReader.decode(tmpBitmap, whatHints);
else
tmpResult = tmpBarcodeReader.decode(tmpBitmap);
//setting results.
tmpFinalResult = String.valueOf(tmpResult.getText());
}
catch (Exception tmpExcpt)
{
throw new Exception("BarCodeUtil.decode Excpt err - " + tmpExcpt.toString() + " - " + tmpExcpt.getMessage());
}
return tmpFinalResult;
}
}
J'essaie de lire les deux images suivantes qui contient code128 et QRCode.
Il peut travailler pour le code128, mais pas pour le QRCode.
Quelqu'un sait pourquoi...
Pour résoudre ce problème, j'ai enfin découpez la zone où le code-barres et QRCode recherchez dans mon programme. Ensuite, ils peuvent être reconnus.
comment avez-vous cut-out de la zone / le spécifier? Je suis dans une situation similaire.
Chers mmcrae, j'ai lu l'intégralité de l'image, tampon ----> BufferedImage tmpBfrImage = ImageIO.lire(whatFile); puis utilisez la méthode getSubimage ----> BufferedImage tmpBarCodeBfrImage = tmpBfrImage.getSubimage(whatBarCodeArea.x, whatBarCodeArea.y, whatBarCodeArea.largeur, whatBarCodeArea.hauteur);
Votre code fonctionne pour moi
comment avez-vous cut-out de la zone / le spécifier? Je suis dans une situation similaire.
Chers mmcrae, j'ai lu l'intégralité de l'image, tampon ----> BufferedImage tmpBfrImage = ImageIO.lire(whatFile); puis utilisez la méthode getSubimage ----> BufferedImage tmpBarCodeBfrImage = tmpBfrImage.getSubimage(whatBarCodeArea.x, whatBarCodeArea.y, whatBarCodeArea.largeur, whatBarCodeArea.hauteur);
Votre code fonctionne pour moi
OriginalL'auteur Johnny | 2013-09-18
Vous devez vous connecter pour publier un commentaire.
Curieusement votre code fonctionne pour moi, mais j'ai dû enlever le suivi de l'indice.
tmpHintsMap.put(DecodeHintType.PURE_BARCODE, Boolean.FALSE);
Quand mon image n'est pas pur de codes à barres, cet indicateur a brisé mon résultat.
Merci!
bizarre ça qui l'empêcherait de trouver des non-codes-barres que c'est ce qu'il semble destiné à faire
OriginalL'auteur Diego Mariano
S'il vous plaît aller à travers ce lien pour le Tutoriel complet. L'auteur de ce code est Joe. Je n'ai pas développé ce code, donc je suis en train de faire Copier coller pour s'assurer que ce qui est disponible dans le cas où le lien est rompu.
L'auteur est à l'aide de ZXing(Passage pour piétons, Bibliothèque), vous pouvez le télécharger à partir ici, pour ce tutoriel.
QR Code de Lecture et d'Écriture du Programme en Java:
Maven dépendance de l'ZXing QR Code library:
Merci pour le commentaire, je vais le mettre à jour bientôt.
Télécharger les pots à partir de java2s.com/Code/Jar/z/zxing.htm
J'étais sous l'impression que les Lecteurs de codes QR ne sont pas conçu pour travailler avec UTF-8, mais parfois ils sont en mesure de deviner correctement. La norme à utiliser est de l'ISO-8859-1 je crois
OriginalL'auteur Akshay Taru
Ce Code a fonctionné pour moi.
Avez-vous utilisé cette (ZXing.Net) Lib?
Est ZXing.net cassé? Il n'est pas de travail pour moi. Le Décoder méthode renvoie toujours null.
OriginalL'auteur Wr4thon