import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class ImageCombineEngine { private int overlayPositions[][] = { {0,0}, {-2,-3}, {-4,-5}, {-6,-7}, {-6,-9}, {-10,-12}, {-11,-14}, {-13,-17}, {-14,-18}, {-17,-20}, {-18,-22}, {-19,-22}, {-20,-23}, {-20,-23}, {-17,-21}, {-14,-19}, {-13,-18}, {-11,-16}, {-9,-15}, {-8,-12}, {-6,-11}, {-3,-8}, {-4,-8}, {-3,-6}, {-1,-4}, {-1,-2}, {0,-1}, {1,1}, {2,2}, {3,4}, {3,5}, {5,7}, {5,6}, {2,3} }; public static void main(String[] args) throws Exception { new ImageCombineEngine(); } ImageCombineEngine() throws Exception { StartCombine(); } private void StartCombine() throws IOException { File path = new File("G:\\HentaiImageCombine\\"); //change this to working folder, don't forget the double backslashes // load face overlay image BufferedImage overlay = ImageIO.read(new File(path, "overlay.png")); //frames 1 to 34 for (int counter = 0; counter < 34; counter++) { String filenameBaseImage = "frame (" + String.valueOf(counter + 1) + ").png"; BufferedImage image = ImageIO.read(new File(path, filenameBaseImage)); BufferedImage combined = new BufferedImage(1382, 1080, BufferedImage.TYPE_INT_ARGB); Graphics g = combined.getGraphics(); g.drawImage(image, 0, 0, null); g.drawImage(overlay, overlayPositions[counter][0], -(overlayPositions[counter][1]), null); g.dispose(); ImageIO.write(combined, "PNG", new File(path, "combined (" + String.valueOf(counter + 1) + ").png")); } //frames 35 to 68 for (int counter = 0; counter < 34; counter++) { String filenameBaseImage = "frame (" + String.valueOf(counter + 1) + ").png"; BufferedImage image = ImageIO.read(new File(path, filenameBaseImage)); BufferedImage combined = new BufferedImage(1382, 1080, BufferedImage.TYPE_INT_ARGB); Graphics g = combined.getGraphics(); g.drawImage(image, 0, 0, null); g.drawImage(overlay, overlayPositions[counter][0], -(overlayPositions[counter][1]), null); g.dispose(); ImageIO.write(combined, "PNG", new File(path, "combined (" + String.valueOf(counter + 35) + ").png")); } BufferedImage image = ImageIO.read(new File(path, "frame (1).png")); BufferedImage combined = new BufferedImage(1382, 1080, BufferedImage.TYPE_INT_ARGB); Graphics g = combined.getGraphics(); g.drawImage(image, 0, 0, null); g.drawImage(overlay, 0, 0, null); g.dispose(); ImageIO.write(combined, "PNG", new File(path, "combined (69).png")); System.out.println("Image combine complete."); } }