Here you can find the source of flipVertically(BufferedImage image)
public static BufferedImage flipVertically(BufferedImage image)
//package com.java2s; //License from project: Open Source License import java.awt.Graphics2D; import java.awt.Image; import java.awt.Rectangle; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; public class Main { public static BufferedImage flipVertically(BufferedImage image) { return transform(image, 1, -1, 0, -image.getHeight()); }/*w ww . j a va 2 s. c o m*/ private static BufferedImage transform(BufferedImage image, int sx, int sy, int dx, int dy) { AffineTransform at = new AffineTransform(); at.concatenate(AffineTransform.getScaleInstance(sx, sy)); at.concatenate(AffineTransform.getTranslateInstance(dx, dy)); return createTransformed(image, at); } private static BufferedImage createTransformed(BufferedImage image, AffineTransform at) { BufferedImage newImage = createImage(image); Graphics2D g = newImage.createGraphics(); g.transform(at); g.drawImage(image, 0, 0, null); g.dispose(); return newImage; } public static BufferedImage createImage(Rectangle bounds) { return createImage(bounds, BufferedImage.TYPE_INT_ARGB); } public static BufferedImage createImage(Rectangle bounds, int type) { return createImage(bounds.width, bounds.height, type); } public static BufferedImage createImage(Image image) { return createImage(image, BufferedImage.TYPE_INT_ARGB); } public static BufferedImage createImage(Image image, int type) { return createImage(image.getWidth(null), image.getHeight(null), type); } public static BufferedImage createImage(int width, int height) { return createImage(width, height, BufferedImage.TYPE_INT_ARGB); } public static BufferedImage createImage(int width, int height, int type) { return new BufferedImage(width, height, type); } }