2013-10-15 3 views
1

Je suis de déconner avec la bibliothèque ZXing 2.2 (est-il une documentation ??)ZXing: créer ean_13 code à barres à utiliser dans ImageView

Ce que je veux faire est:

Prenez une chaîne EAN13 existante, laissez-passer à la bibliothèque et obtenir une image à utiliser dans un ImageView (ou l'écrire dans le stockage interne et ensuite créer bitmap pour imageView par moi-même)

Malheureusement MatrixToImageWriter ne fonctionne que dans J2SE et pas dans android (à cause de awt?) et donc je ne peux pas l'utiliser.

Je trouve cet article Generate barcode image in Android application

Il fonctionne très bien pour Code128, mais quand je change la BarcodeFormat.CODE_128 à EAN13 je reçois juste une image vide.

Des idées? Existe-t-il d'autres bibliothèques pour réaliser ce que je veux?

Merci d'avance!

Répondre

0

À quoi ressemble votre code? Que se passe-t-il lorsque vous parcourez le code de création (via ce que vous avez lié)

Je crée des codes à barres datamatrix à lire par android zxlib (par caméra) ou par un scanner de codes à barres (pistolet bluetooth), mais je n'ai pas dérangé pour créer des codes à barres sur Android (puisque je veux imprimer les codes à barres, plus facile sur ma machine dev).

Mon Datamatrix Code créer ressemble:

MultiFormatWriter writer = new MultiFormatWriter(); 
    BitMatrix b = writer.encode(bitmapstr.toString(), BarcodeFormat.DATA_MATRIX, 1200, 1200); 
    File f = new File(startpath + "bitmap-" + h.name + ".bmp"); 
    MatrixToImageWriter.writeToFile(b, "bmp", f); 

Pour ce qui est aide/docs, il est open source, donc il y a toujours;)

+0

Merci de partager vos idées. Le code ci-dessus fonctionne bien sur JAVA SE, donc je suppose que je vais juste construire une servlet et récupérer les fichiers PNG d'Android via HTTP. Peut-être que je trouverai un moyen de le faire fonctionner sous Android, cependant, nous verrons. – AndyB

+0

OK - lorsque vous dites une image vide, la BitMatrix est-elle retournée par l'encodeur? (Au moment où j'ai écrit ce code, j'avais aussi téléchargé tout le code zxlib pour pouvoir déboguer quelques problèmes, mais il y a si longtemps, j'ai oublié quels étaient les problèmes ..) –

+0

Je n'ai pas t se concentrer sur cela plus longtemps, en raison de la dépendance à Java SE. J'ai trouvé une autre solution, qui semble fonctionner parfaitement en utilisant des polices: http://www.codeproject.com/Articles/156402/Android-Generating-an-EAN13-Barcode – AndyB

1

Vous obtenez une image vide parce que la chaîne que vous passez n'est pas au format requis par le format BarCode "EAN-13". Il doit être de 13 chiffres et le dernier chiffre doit être la somme de contrôle des 12 premiers chiffres.

Vous pouvez utiliser ce lien pour plus d'informations sur le format EAN-13. J'ai utilisé la fonction suivante pour créer un chiffre de somme de contrôle de la chaîne.

private int calculateChecksumDigit(String mMembershipId) { 
    int total_sum=0; 
    for(int i=0;i<mMembershipId.length();i++) 
    { 
     if(i%2!=0) { 
      total_sum=total_sum+Integer.parseInt(""+mMembershipId.charAt(i))*3; 
     } 
     else 
     { 
      total_sum=total_sum+Integer.parseInt(""+mMembershipId.charAt(i)); 
     } 
    } 
    return 10-(total_sum%10); 

} 

puis il passe comme

BarCodeGenerator.encodeAsBitmap(mMembershipId+calculateChecksumDigit(mMembershipId), BarcodeFormat.EAN_13, widthInPixels, heightInPixels); 
Questions connexes