- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
public class ImageRotator {
public static BufferedImage rotate(BufferedImage originalImage, int angle) {
BufferedImage image = null;
switch (angle) {
case 90:
case -270:
image = ImageRotator.rotate90Right(originalImage);
break;
case 270:
case -90:
image = ImageRotator.rotate90Left(originalImage);
break;
case 180:
case -180:
image = ImageRotator.rotate180(originalImage);
break;
default:
image = originalImage;
break;
}
return image;
}
private static BufferedImage rotate90Left(BufferedImage bi) {
int width = bi.getWidth();
int height = bi.getHeight();
BufferedImage biFlip = new BufferedImage(height, width, bi.getType());
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
biFlip.setRGB(height - 1 - j, width - 1 - i, bi.getRGB(i, j));
}
}
return biFlip;
}
private static BufferedImage rotate90Right(BufferedImage bi) {
int width = bi.getWidth();
int height = bi.getHeight();
BufferedImage biFlip = new BufferedImage(height, width, bi.getType());
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
biFlip.setRGB(j, i, bi.getRGB(i, j));
}
}
return biFlip;
}
private static BufferedImage rotate180(BufferedImage bi) {
int width = bi.getWidth();
int height = bi.getHeight();
BufferedImage biFlip = new BufferedImage(width, height, bi.getType());
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
biFlip.setRGB(i, j, bi.getRGB(width - 1 - i, height - 1 - j));
}
}
return biFlip;
}
}
Есть в Java для работы с изображениями такой класс как AphineTransform, но в после 3 часов активного взаимодействия с ним добился только того что изображение после болшого кол-ва поворотов привращалось в точку. Поэтому из себя была выдавлена эта заглушка...
guest 22.10.2009 04:55 # 0