譬如原图16.8K 顺时针旋转15度后变成124K。有什么办法让图片大小变小 代码如下:
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Transparency;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;import javax.imageio.ImageIO;/**
 * 
 * @author lxw_it
 *
 */
public class ImgUtil {
/**
 * 旋转图片
 * @param image
 * @param angle 角度
 * @return
 */
public static BufferedImage rotate(BufferedImage image,double angle){
int w = image.getWidth();
int h = image.getHeight();

int width  = (int)Math.ceil(h * MathUtil.sinAbs(angle) + w * MathUtil.cosAbs(angle));
int height = (int)Math.ceil(h * MathUtil.cosAbs(angle) + w * MathUtil.sinAbs(angle));

AffineTransform trans = new AffineTransform();
trans.setToTranslation((width-w)/2,(height-h)/2);
trans.rotate(Math.toRadians(angle), w/2, h/2);
BufferedImage relImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

Graphics2D g2d = relImg.createGraphics();

//设置背景为透明
relImg = g2d.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);
g2d.dispose();
g2d = relImg.createGraphics();

g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION,  
                 RenderingHints.VALUE_INTERPOLATION_BILINEAR);  
g2d.setTransform(trans);

g2d.drawImage(image, null, null);
g2d.dispose();

return relImg;
}


public static void main(String[] args) throws IOException {
String path = "F:/image/";

File f = new File(path + "0.jpg");
BufferedImage image = ImageIO.read(f);

for (int angle = 15; angle<=360;angle += 15) {
BufferedImage relImage = rotate(image,angle);
File of = new File(path  + angle + ".jpg");
ImageIO.write(relImage, "png", of);
}
}


}/**
 * param
 *  angle:角度
 * 
 * @author lxw_it
 *
 */
public class MathUtil {
/**
 * 正弦的绝对值
 * @param angle
 * @return
 */
public static double sinAbs(double angle){
return Math.abs(sin(angle));
}

public static double sin(double angle){
return Math.sin(Math.toRadians(angle));
}

/**
 * 余弦的绝对值
 * @param angle
 * @return
 */
public static double cosAbs(double angle){
return Math.abs(cos(angle));
}

public static double cos(double angle){
return Math.cos(Math.toRadians(angle));
}


}
javaimagerotateAffineTransform