Пример #1
0
 /**
  * Gets cloned image files.
  *
  * @return the ClonedImageFiles
  * @throws java.io.IOException
  */
 public List<File> getClonedImageFiles() throws IOException {
   if (oimages != null) {
     if (dpiX == 0 || dpiY == 0) {
       if (rect == null || rect.isEmpty()) {
         return ImageIOHelper.createTiffFiles(oimages, index);
       } else {
         // rectangular region
         //                    BufferedImage bi = ((BufferedImage)
         // oimages.get(index).getRenderedImage()).getSubimage(rect.x, rect.y, rect.width,
         // rect.height);
         // On Linux, the standard getSubimage method has generated images that Tesseract does not
         // like.
         BufferedImage bi =
             ImageHelper.getSubImage(
                 (BufferedImage) oimages.get(index).getRenderedImage(),
                 rect.x,
                 rect.y,
                 rect.width,
                 rect.height);
         List<IIOImage> tempList = new ArrayList<IIOImage>();
         tempList.add(new IIOImage(bi, null, null));
         return ImageIOHelper.createTiffFiles(tempList, 0);
       }
     } else {
       // scaling
       if (rect == null || rect.isEmpty()) {
         List<IIOImage> tempList = new ArrayList<IIOImage>();
         for (IIOImage oimage : (index == -1 ? oimages : oimages.subList(index, index + 1))) {
           BufferedImage bi = (BufferedImage) oimage.getRenderedImage();
           Map<String, String> metadata = ImageIOHelper.readImageData(oimage);
           float scale = dpiX / Float.parseFloat(metadata.get("dpiX"));
           bi =
               ImageHelper.getScaledInstance(
                   bi, (int) (bi.getWidth() * scale), (int) (bi.getHeight() * scale));
           tempList.add(new IIOImage(bi, null, null));
         }
         return ImageIOHelper.createTiffFiles(tempList, (index == -1 ? index : 0), dpiX, dpiY);
       } else {
         // rectangular region
         // Cut out the subimage first and rescale that
         BufferedImage bi =
             ((BufferedImage) oimages.get(index).getRenderedImage())
                 .getSubimage(rect.x, rect.y, rect.width, rect.height);
         Map<String, String> metadata = ImageIOHelper.readImageData(oimages.get(index));
         float scale = dpiX / Float.parseFloat(metadata.get("dpiX"));
         bi =
             ImageHelper.getScaledInstance(
                 bi, (int) (bi.getWidth() * scale), (int) (bi.getHeight() * scale));
         List<IIOImage> tempList = new ArrayList<IIOImage>();
         tempList.add(new IIOImage(bi, null, null));
         return ImageIOHelper.createTiffFiles(tempList, 0, dpiX, dpiY);
       }
     }
   } else {
     return ImageIOHelper.createTiffFiles(imageFile, index);
   }
 }