Вместо поворота изображения на 180 градусов, вы можете перевернуть его по горизонтали и вертикали (без преобразования пикселей):
private BufferedImage flipH(BufferedImage src) {
int w = src.getWidth();
int h = src.getHeight();
BufferedImage dst = new BufferedImage(w, h, src.getType());
Graphics2D g = dst.createGraphics();
g.drawImage(src,
0, // x of first corner (destination)
0, // y of first corner (destination)
w, // x of second corner (destination)
h, // y of second corner (destination)
w, // x of first corner (source)
0, // y of first corner (source)
0, // x of second corner (source)
h, // y of second corner (source)
null);
g.dispose();
return dst;
}
private BufferedImage flipV(BufferedImage src) {
int w = src.getWidth();
int h = src.getHeight();
BufferedImage dst = new BufferedImage(w, h, src.getType());
Graphics2D g = dst.createGraphics();
g.drawImage(src, 0, 0, w, h, 0, h, w, 0, null);
g.dispose();
return dst;
}
...
BufferedImage flipped = flipH(flipV(ImageIO.read(new File("test.png"))));
ImageIcon icon = new ImageIcon(flipped);
...
Редактировать: или даже лучше, перевернуть как по горизонтали, так и по вертикали в одиночной операции (так же, как поворот на 180 градусов):
g.drawImage(src, 0, 0, w, h, w, h, 0, 0, null);
Edit2: Существует также специфический для SWT пример поворота / переворачивания изображения без Преобразование тоже .