package cx.prutser.sudoku.ocr; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.List; /** * @author Erik van Zijst */ class LoggingTileExtractor implements TileExtractor { private final TileExtractor tileExtractor; private final String path; private long sequence; public LoggingTileExtractor(TileExtractor tileExtractor, String path) { this.tileExtractor = tileExtractor; this.sequence = System.currentTimeMillis(); File dir = new File(path); if (!dir.exists() || !dir.canWrite()) { this.path = null; System.err.println("Cannot log debug images to " + dir.getAbsolutePath() + ". Directory does not exist or is not writable."); } else { this.path = path; } } public List<BufferedImage> extractTiles(BufferedImage image) { final List<BufferedImage> tiles = tileExtractor.extractTiles(image); write(image); for (BufferedImage tile : tiles) { write(tile); } return tiles; } private void write(BufferedImage image) { if (path != null) { File file = new File(String.format("%s/%d.png",path, sequence++)); try { ImageIO.write(image, "png", file); } catch(IOException e) { System.err.println("Error writing image " + file.getPath() + ": " + e.getMessage()); } } } }