Esempio n. 1
0
      private Result[] decodeMulti(Uri uri, IDictionary<DecodeHintType, object> hints)
      {
         Bitmap image;
         try
         {
            image = (Bitmap)Bitmap.FromFile(uri.LocalPath);
         }
         catch (Exception)
         {
            throw new FileNotFoundException("Resource not found: " + uri);
         }

         LuminanceSource source;
         if (config.Crop == null)
         {
            source = new BitmapLuminanceSource(image);
         }
         else
         {
            int[] crop = config.Crop;
            source = new BitmapLuminanceSource(image).crop(crop[0], crop[1], crop[2], crop[3]);
         }
         BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
         if (config.DumpBlackPoint)
         {
            dumpBlackPoint(uri, image, bitmap);
         }

         MultiFormatReader multiFormatReader = new MultiFormatReader();
         GenericMultipleBarcodeReader reader = new GenericMultipleBarcodeReader(
               multiFormatReader);
         Result[] results = reader.decodeMultiple(bitmap, hints);
         if (results != null && results.Length > 0)
         {
            if (config.Brief)
            {
               Console.Out.WriteLine(uri + ": Success");
            }
            else
            {
               foreach (var result in results)
               {
                  ParsedResult parsedResult = ResultParser.parseResult(result);
                  Console.Out.WriteLine(uri + " (format: "
                                          + result.BarcodeFormat + ", type: "
                                          + parsedResult.Type + "):\nRaw result:\n"
                                          + result.Text + "\nParsed result:\n"
                                          + parsedResult.DisplayResult);
                  Console.Out.WriteLine("Found " + result.ResultPoints.Length + " result points.");
                  for (int i = 0; i < result.ResultPoints.Length; i++)
                  {
                     ResultPoint rp = result.ResultPoints[i];
                     Console.Out.WriteLine("  Point " + i + ": (" + rp.X + ',' + rp.Y + ')');
                  }
               }
            }
            return results;
         }
         else
         {
            Console.Out.WriteLine(uri + ": No barcode found");
         }
         return null;
      }