Java对图片的操作
有一天我在做一个游戏的时候听说可以把图片翻转过来可以减少自己做图片的时间 所以我就在网上找了一下 发现很多文章写得特别复杂 并且有一些方法都不能在eclipse上面用,所以我就模仿网上的文章写出适合自己的方法;
对图片的操作总体来就是:
1。新建一个BufferedImage,Graphics2D
2.然后用BufferedImage类中的一个createGraphics方法 来返回一个Graphics2D给之前创建好Graphics2D接受
(翻转)3.最后Graphics2D类中的drawImage方法来画(这才是重点 你只要图片的右上的坐标写进左上的坐标 左下的坐标写进右下的位置就行了)
(旋转)3.在Graphics2D类有一个rotate的方法但只要传入参数就行了 但那个要是弧度才行 并且还要给定旋转后大小 如果大小给大了的话就显示不出来
然后就是用drawImage方法画了
(缩放)3.这个就跟翻转才不多了
要注意的是drawImage方法画的意思是把原图画到空图片上
//把图片翻转 public BufferedImage flipImage(final BufferedImage bufferedimage)
{
int w = bufferedimage.getWidth();// 得到宽度。
int h = bufferedimage.getHeight();// 得到高度。
int type= bufferedimage.getColorModel().getTransparency();// 得到图片透明度。
BufferedImage img=new BufferedImage(w,h,type);// 空图片。
Graphics2D graphics2d;// 空画笔。
(graphics2d = (img.createGraphics())).drawImage(bufferedimage, 0, 0, w, h, w, 0, 0, h, null);//这是把bufferedimage图片画到img新的图片上 graphics2d.dispose();
return img;
}
//把图片旋转
public static BufferedImage rotateImage(final BufferedImage bufferedimage, final int degree)
{
int w= bufferedimage.getWidth();// 得到图片宽度。
int h= bufferedimage.getHeight();// 得到图片高度。
int type= bufferedimage.getColorModel().getTransparency();// 得到图片透明度。
BufferedImage img;// 空的图片。
Graphics2D graphics2d;// 空的画笔。
img= new BufferedImage(w, h, type);
graphics2d=img.createGraphics();
graphics2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2d.rotate(Math.toRadians(degree), w / 2, h / 2);// 旋转,degree是整型,度数,比如垂直90度。
graphics2d.drawImage(bufferedimage, 0, 0, null);// 从bufferedimagecopy图片至img,0,0是img的坐标。
graphics2d.dispose();
return img;// 返回复制好的图片,原图片依然没有变,没有旋转,下次还可以使用。
}
//把图片缩放
public static BufferedImage resizeImage(final BufferedImage bufferedimage, final int w, final int h)
{
int type= bufferedimage.getColorModel().getTransparency();// 得到透明度。
BufferedImage img=new BufferedImage(w, h, type);// 得到图片。
Graphics2D graphics2d;// 空画笔。
graphics2d= img.createGraphics();
graphics2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2d.drawImage(bufferedimage, 0, 0, w, h, 0, 0, bufferedimage.getWidth(), bufferedimage.getHeight(), null);
graphics2d.dispose();
return img;
}