Decoder image code barre

nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 - 5 avril 2017 à 10:21
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 - 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

1 réponse

nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 17
Modifié le 5 avril 2017 à 11:00
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^^)
0
Rejoignez-nous