Rotated
ImageIO.write(scaled, "png", new File("temp.png"));
ImageIO.write(scaled, "jpg", new File("temp.jpg"));
BufferedImage.TYPE_INT_RGB;
AffineTransformOp.TYPE_NEAREST_NEIGHBOR;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
/** @author John B. Matthews */
public class TransformImage extends JPanel {
private static final int SIZE = 128;
private static final Font FONT = new
Font("Serif", Font.BOLD, SIZE * 7 / 8);
private static final BufferedImage errorImage = new
BufferedImage(SIZE, SIZE, BufferedImage.TYPE_INT_ARGB); {
Graphics2D g2d = errorImage.createGraphics();
g2d.setPaint(Color.red.darker());
g2d.setFont(FONT);
String s = "\u2298";
int w2 = g2d.getFontMetrics().stringWidth(s) / 2;
int h2 = g2d.getFontMetrics().getDescent();
g2d.drawString(s, SIZE / 2 - w2 , SIZE / 2 + h2);
g2d.dispose();
}
private static BufferedImage scaled;
public TransformImage() {
BufferedImage image = getSquareImage("image.jpg");
AffineTransform scaleTransform = new AffineTransform();
int w = image.getWidth();
int h = image.getHeight();
// last-in-first-applied: rotate, scale, shear
scaleTransform.shear(0.0, 0.0);
scaleTransform.scale(0.5, 0.5);
scaleTransform.rotate(-Math.PI / 2, w / 2, h / 2);
AffineTransformOp scaleOp = new AffineTransformOp(
scaleTransform, AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
scaled = scaleOp.filter(image, null);
setPreferredSize(new Dimension(scaled.getWidth(), scaled.getHeight()));
try {
ImageIO.write(scaled, "jpg", new File("temp.jpg"));
} catch (IOException ex) {
ex.printStackTrace(System.err);
}
}
private BufferedImage getSquareImage(String name) {
BufferedImage image = null;
try {
image = ImageIO.read(new File(name));
} catch (IOException ioe) {
return errorImage;
}
int w = image.getWidth();
int h = image.getHeight();
int max = Math.max(w, h);
BufferedImage square = new BufferedImage(
max, max, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = square.createGraphics();
g2d.drawImage(image, (max - w) / 2, (max - h) / 2, null);
g2d.dispose();
return square;
}
public void paintComponent(Graphics g) {
final Graphics2D g2d = (Graphics2D)g;
g2d.setRenderingHint(
RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2d.drawImage(scaled, 0, 0, null);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new TransformImage());
f.pack();
f.setVisible(true);
}
});
}
}