Decoder image code barre

nagaD.scar 4148 Messages postés samedi 8 septembre 2007Date d'inscription 13 décembre 2017 Dernière intervention - 5 avril 2017 à 10:21 - Dernière réponse : nagaD.scar 4148 Messages postés samedi 8 septembre 2007Date d'inscription 13 décembre 2017 Dernière intervention
- 5 avril 2017 à 10:59
Salut à tous!

Je suis pas vraiment certain si je dois poster ici ou plutot dans le café mais bon ^^
Pour faire court, j'ai des fichiers tif qui contiennent des codes barre (différents formats) et le but est de les lire pour traitement. Pour ca on m a demandé de regarder en java, et que ca puisse être porté sur linux (je connais pas la distib).

J'ai cherché sur le net pour trouver des bibliothèques et pour le moment je n ai trouvé que le clear image sdk, mais s'appuyant sur une dll je ne pense pas pouvoir la portée (et si je fais fausse route n'hésitez pas à me le dire!).

Je suis aussi tombé sur ZXing mais je ne parviens pas à l'utiliser (je penses que je ne trouve pas le bon package, si vous avez des info dessus je suis preneur aussi^^).

Donc voilà, avez vous des pistes, packages, tuto, etc. qui serai susceptible de me convenir ?

merci d'avance.

Naga
Afficher la suite 

1 réponse

Répondre au sujet
nagaD.scar 4148 Messages postés samedi 8 septembre 2007Date d'inscription 13 décembre 2017 Dernière intervention - Modifié par nagaD.scar le 5/04/2017 à 11:00
0
Utile
j'ai légèrement avancé du côté de zxing : je peux lire des images jpg, bmp, mais par contre je ne peux pas lire les tiff (ImageIO.read renvoi null).

Voici mon code actuel :



public class oCBX {
   private static BarcodeFormat DEFAULT_BARCODE_FORMAT = BarcodeFormat.CODABAR;
  
      public static String decode(File whatFile, Map<DecodeHintType, Object> whatHints) throws Exception 
      {
          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);
              tmpFinalResult = String.valueOf(tmpResult.getText());
          } 
          catch (Exception tmpExcpt) 
          {
              throw new Exception("BarCodeUtil.decode Excpt err - " + tmpExcpt.toString() + " - " + tmpExcpt.getMessage());
          }
          return tmpFinalResult;
     }
      


   public static void main(String[] args){

         try
         {       
          
             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("c:\\bc\\im\\7.tif");
             String tmpRetString = oCBX.decode(tmpFile, tmpHintsMap);
             System.out.println(tmpRetString);
         }
         catch (Exception tmpExpt)
         {
             System.out.println("main: " + "Excpt err! (" + tmpExpt.getMessage() + ")");
         }
         System.out.println("main: " + "Program end.");
    
   }
}


(donc le message : Could not decode image.)

Une idée? Info? (ps: je suis novice java^^)
Commenter la réponse de nagaD.scar

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.