public void corrector() { compile(); int max = Math.min(grabbedImageData.size(), grabbedImagePositions.size()); GrabbedImageData gid = null; GrabbedImagePosition gip = null; for (int i = 0; i < max; i++) { for (GrabbedImageData g : grabbedImageData) { if (g != null && g.getSerialnumber() == i) { gid = g; break; } } for (GrabbedImagePosition g : grabbedImagePositions) { if (g != null && g.getSerialnumber() == i) { gip = g; } } if (gid == null || gip == null) { System.out.printf("Error : i = %d, gid = %s, gip = %s", i, gid, gip); } else if (gid.getRownumber() != gip.getRownumber()) { grabbedImagePositions.remove(gip); resetGipSerial(); } } }
public void createImages() { compileScreenShot(); File dir = new File( getCompileOutputCurrentDir(), ResourceHelper.getGoogleProperty(Constants.KEY_COMPILED_OUTPUT_IMAGE_DIR_NAME)); if (dir.mkdirs()) { BufferedImage shot = ResourceHelper.getImageResource(googleScreenShot); Image img; Rectangle rect; String pre = ResourceHelper.getGoogleProperty(Constants.KEY_COMPILED_OUTPUT_IMAGE_NAME_PRE); File file; for (GrabbedImagePosition gip : getGrabbedImagePositions()) { try { rect = gip.getBounds(); img = shot.getSubimage(rect.x, rect.y, rect.width, rect.height); file = new File( dir, String.format("%s_%s_%s.png", pre, gip.getSerialnumber(), gip.getRownumber())); ImageIO.write((RenderedImage) img, "png", file); } catch (IOException ex) { ResourceHelper.errLog("Compiler > createImages() > Error : %s", ex); } } } else { ResourceHelper.errLog("Compiler > createImages() > Unable to create image directory"); } }
public void resetGipSerial() { GrabbedImagePosition gip; for (int i = 0; i < grabbedImagePositions.size(); i++) { gip = grabbedImagePositions.get(i); if (gip != null) { gip.setSerialnumber(i); } } }
public void createClones() { compile(); File dir = new File( getCompileOutputCurrentDir(), ResourceHelper.getGoogleProperty(Constants.KEY_COMPILED_OUTPUT_CLONE_DIR_NAME)); if (dir.mkdirs()) { BufferedImage shot = ResourceHelper.getImageResource(googleScreenShot); Image img; Rectangle rect; File file; String fname; for (GrabbedImagePosition gip : getGrabbedImagePositions()) { GrabbedImageData gid = null; for (GrabbedImageData g : grabbedImageData) { if (g.getSerialnumber() == gip.getSerialnumber()) { gid = g; } } try { rect = gip.getBounds(); img = shot.getSubimage(rect.x, rect.y, rect.width, rect.height); fname = null; file = null; if (gid != null) { fname = gid.getFileName(); if (fname.matches(".+\\..{3,}")) { file = new File(dir, fname); } } try { if (file == null || !file.createNewFile()) { file = new File( dir, String.format( "Clone%d info invalid or not found.png", gip.getSerialnumber())); } } catch (IOException exx) { file = new File( dir, String.format("Clone%d invalid name found.png", gip.getSerialnumber())); } ImageIO.write((RenderedImage) img, "png", file); } catch (Exception ex) { ResourceHelper.errLog("Compiler > createClones() > Error : %s", ex); } } } else { ResourceHelper.errLog("Compiler > createClone() > Unable to create clone"); } }
public void compileScreenShot() { createOutputDirStructure(); if (!screenshotcompiled) { try { int travDiviser = 100; BufferedImage shot = ResourceHelper.getImageResource(googleScreenShot); int shotWidth = shot.getWidth(); int shotHeight = shot.getHeight(); int travXUnit = Math.max(shotWidth / travDiviser, 1); int travYUnit = Math.max(shotHeight / travDiviser, 1); Color bg = new Color( Integer.parseInt( ResourceHelper.getGoogleProperty(Constants.KEY_GOOGLE_BACKGROUND_COLOR_RED)), Integer.parseInt( ResourceHelper.getGoogleProperty(Constants.KEY_GOOGLE_BACKGROUND_COLOR_GREEN)), Integer.parseInt( ResourceHelper.getGoogleProperty(Constants.KEY_GOOGLE_BACKGROUND_COLOR_BLUE))); Color col; ArrayList<Integer> topList = new ArrayList<>(); ArrayList<Integer> btmList = new ArrayList<>(); boolean lastLineMatched = true; for1: for (int y = 0; y < shotHeight; y++) { for2: for (int x = 0; x < shotWidth; x += travXUnit) { col = new Color(shot.getRGB(x, y)); if (!col.equals(bg)) { if (lastLineMatched) { topList.add(y); lastLineMatched = false; } continue for1; } } if (!lastLineMatched) { btmList.add(y - 1); lastLineMatched = true; } } Rectangle rect = null; boolean newRectInserted = false; ArrayList<GrabbedImagePosition> grabbedImagePoss = new ArrayList<>(); int colnum, sno = 0; loop1: for (int i = 0; i < topList.size(); i++) { lastLineMatched = true; int maxTop = topList.get(i); int maxBtm = btmList.get(i); travYUnit = Math.max((maxBtm - maxTop) / travDiviser, 1); colnum = 0; loop2: for (int x = 0; x < shotWidth; x++) { loop3: for (int y = maxTop; y <= maxBtm; y += travYUnit) { col = new Color(shot.getRGB(x, y)); if (!col.equals(bg)) { if (lastLineMatched) { newRectInserted = false; rect = new Rectangle(x, maxTop, 0, maxBtm - maxTop + 1); lastLineMatched = false; } continue loop2; } } if (!lastLineMatched) { rect.width = x - rect.x; GrabbedImagePosition gip = new GrabbedImagePosition(sno++); gip.setBounds(rect); gip.setRownumber(i); gip.setColnumber(colnum++); grabbedImagePoss.add(gip); lastLineMatched = true; newRectInserted = true; } } if (!newRectInserted) { rect.width = shotWidth - rect.x; GrabbedImagePosition gip = new GrabbedImagePosition(sno++); gip.setBounds(rect); gip.setRownumber(i); gip.setColnumber(colnum++); grabbedImagePoss.add(gip); newRectInserted = true; } } int maxY, maxX; loop1: for (GrabbedImagePosition gip : grabbedImagePoss) { rect = gip.getBounds(); travXUnit = Math.max(rect.width / travDiviser, 1); lastLineMatched = true; maxY = rect.y + rect.height; maxX = rect.x + rect.width; loop2: for (int y = rect.y; y < maxY; y++) { loop3: for (int x = rect.x; x < maxX; x += travXUnit) { col = new Color(shot.getRGB(x, y)); if (!col.equals(bg)) { if (lastLineMatched) { rect.y = y; lastLineMatched = false; } continue loop2; } } if (!lastLineMatched) { rect.height = y - rect.y; lastLineMatched = true; } } } setGrabbedImagePositions(grabbedImagePoss); screenshotcompiled = true; } catch (Exception ex) { ResourceHelper.errLog("Compiler > compileScreenShot() > Error %s", ex); } } }