FileInputStream in = new FileInputStream(picFile);
BufferedImage bufferedImage = ImageIO.read(in);
InputStream inImg =rotateImg(bufferedImage,degree,null);
/*
* 圖片旋轉
*/
public InputStream rotateImg(BufferedImage image, int degree,
Color bgcolor) throws IOException {
int iw = image.getWidth();// 原始圖象的寬度
int ih = image.getHeight();// 原始圖象的高度
int w = 0;
int h = 0;
int x = 0;
int y = 0;
degree = degree % 360;
if (degree < 0)
degree = 360 + degree;// 將角度轉換到0-360度之間
double ang = Math.toRadians(degree);// 將角度轉爲弧度
/**
* 確定旋轉後的圖象的高度和寬度
*/
if (degree == 180 || degree == 0 || degree == 360) {
w = iw;
h = ih;
} else if (degree == 90 || degree == 270) {
w = ih;
h = iw;
} else {
int d = iw + ih;
w = (int) (d * Math.abs(Math.cos(ang)));
h = (int) (d * Math.abs(Math.sin(ang)));
}
x = (w / 2) - (iw / 2);// 確定原點座標
y = (h / 2) - (ih / 2);
BufferedImage rotatedImage = new BufferedImage(w, h, image.getType());
Graphics2D gs = (Graphics2D) rotatedImage.getGraphics();
if (bgcolor == null) {
rotatedImage = gs.getDeviceConfiguration().createCompatibleImage(w,
h, Transparency.OPAQUE);
} else {
gs.setColor(bgcolor);
gs.fillRect(0, 0, w, h);// 以給定顏色繪製旋轉後圖片的背景
}
AffineTransform at = new AffineTransform();
at.rotate(ang, w / 2, h / 2);// 旋轉圖象
at.translate(x, y);
AffineTransformOp op = new AffineTransformOp(at,
AffineTransformOp.TYPE_BICUBIC);
op.filter(image, rotatedImage);
image = rotatedImage;
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ImageOutputStream iamgeOut = ImageIO.createImageOutputStream(byteOut);
ImageIO.write(image, "jpg", iamgeOut);
InputStream inputStream = new ByteArrayInputStream(
byteOut.toByteArray());
return inputStream;
}
Java圖片旋轉
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.