這是我使用的一些代碼。您可以修改它以符合您的需求。
調整圖像大小:
/**
* Resizes the image
* @param filePath File path to the image to resize
* @param w Width of the image
* @param h Height of the image
* @return A resized image
*/
public ImageIcon resizeImage(String filePath, int w, int h) {
String data = filePath;
BufferedImage bsrc, bdest;
ImageIcon theIcon;
//scale the image
try
{
if(dataSource == DataTypeEnum.file)
{
bsrc = ImageIO.read(new File(data));
}
else
{
bsrc = ImageIO.read(new URL(filePath));
}
bdest = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bdest.createGraphics();
AffineTransform at = AffineTransform.getScaleInstance((double) w/bsrc.getWidth(),
(double) h/bsrc.getHeight());
g.drawRenderedImage(bsrc, at);
//add the scaled image
theIcon = new ImageIcon(bdest);
return theIcon;
}
catch (Exception e)
{
Window.getLogger().warning("This image can not be resized. Please check the path and type of file.");
//restore the old background
return null;
}
}
旋轉圖像:
注:角弧度
public static BufferedImage rotate(BufferedImage image, double angle) {
double sin = Math.abs(Math.sin(angle)), cos = Math.abs(Math.cos(angle));
int w = image.getWidth(), h = image.getHeight();
int neww = (int)Math.floor(w*cos+h*sin), newh = (int)Math.floor(h*cos+w*sin);
GraphicsConfiguration gc = getDefaultConfiguration();
BufferedImage result = gc.createCompatibleImage(neww, newh, Transparency.TRANSLUCENT);
Graphics2D g = result.createGraphics();
g.translate((neww-w)/2, (newh-h)/2);
g.rotate(angle, w/2, h/2);
g.drawRenderedImage(image, null);
g.dispose();
return result;
}
那怎麼旋轉圖像? – 2011-01-24 21:04:59