有一天我在做一个游戏的时候听说可以把图片翻转过来可以减少自己做图片的时间  所以我就在网上找了一下  发现很多文章写得特别复杂 并且有一些方法都不能在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;

}

java 图片操作_Java对图片的操作相关推荐

  1. java 图片水印_JAVA实现图片水印

    一.JAVA图片水印实现原理 1.1.JAVA图片水印实现思路 1.创建缓存图片对象. 2.创建Java绘图工具对象. 3.使用绘图工具对象将原图绘制到缓存图片对象. 4.使用绘图工具将水印(文字/图 ...

  2. java 背景图片自适应_java 背景图片随窗口大小变化进行自动缩放及平铺 | 学步园...

    最近一直被这个问题困扰这,上网也搜了不少这方面的知识,发现很多人都说用reapint方法(很简单的)进行图片重绘就OK了(没源码),于是乎至今也没实现 但通过自己的摸索也确实学到了不少东东滴! 在看代 ...

  3. java thumbnails 中心点_java Thumbnails 图片处理的使用

    在后端开发的过程中,都逃不开与文件传输特别是图片的传输打交道,但是因为现在各种拍照设备发展越来越快,拍出的照片更是越来越清晰,但是照片文件的大小也是越来越大了,手机拍照小则2M大则30M这在网络传输过 ...

  4. java对数据库的操作_java对数据库的操作(jdbc)

    Java通过JDBC对数据库的连接操作其通用操作为: String username; String password; String databaseURL; Class.forName(" ...

  5. java 水印 位置_Java实现图片加水印且控制位置和透明度

    Java实现图片加水印且控制位置和透明度 昨天要做一个给图片加水印的功能,不想使用一些插件,就在网上转了一会儿,经过改装成了我需要的功能,代码如下: package org.guhao; import ...

  6. java验证图片大小_java 校验图片的大小、尺寸、比例

    import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.i ...

  7. java 修改图片分辨率_java 修改图片的像素大小,清晰度

    修改图片的像素,清晰度 代码 /** * 改变图片 像素 * * @param file * @param qality 参数qality是取值0~1范围内 清晰程度 数值越小分辨率越低 * @par ...

  8. java 文件目录操作_Java目录文件的操作 -解道Jdon

    目录文件的操作 目录文件的操作也是除了数据库操作以外,经常需要操作的一个数据对象. 移动文件,相当于linux 中mv命令,但与平台无关: /** * This class moves an inpu ...

  9. background图片叠加_java实现图片的叠加效果

    实现效果图 这个效果的实现思路是: 1.先准备一张背景图,像素自己去定.像素越高最后生成的图片会更清晰,当然图片也会越大,注意这个背景图一定要是png格式的,要放用户头像的位置要镂空,透明的. 至于为 ...

最新文章

  1. linux查看地址和,UNIX/LINUX平台下查看MAC和WWN地址的方法
  2. [Spring MVC] - Spring MVC环境搭建
  3. 常见的面试思考题(MARK)
  4. 【Java 网络编程】TCP 传输机制 ( 数据拆分 | 排序 | 顺序发送 | 顺序组装 | 超时重发 )
  5. 社区首款 OAM 可视化平台发布!关注点分离、用户友好、上手难度低
  6. python中3个单引号_Python中单引号,双引号,3个单引号及3个双引号的区别
  7. WebService它CXF注释错误(两)
  8. torch的拼接函数_从零开始深度学习Pytorch笔记(13)—— torch.optim
  9. java mysql 死锁,java-Spring JPA MySQL和死锁
  10. 串口协议的制定以及串口中怎样接收一个完整数据包的解析
  11. tcp协议栈优化1-增加TCP初始拥塞窗口
  12. iOS版微信跟上了!已支持改微信号,修改后好友不会收到提醒
  13. Visual C++ 6.0 Processor Pack 编译xvidcore1.1.0
  14. Elasticsearch - JNA
  15. 单片机中数码管的十六进制转换
  16. 设备ssh连接失败问题
  17. 【C语言】博客之旅从学习C语言开始
  18. dede {dede:channel currentstyle 中使用~seotitle~
  19. 北邮智能车仿真培训(八)—— 两轮摄像头平衡车
  20. WebRTC之服务器搭建

热门文章

  1. 怎样做才是一个独立自主的人?
  2. 有没有网上python一对一-使用Python的Tornado框架实现一个一对一聊天的程序
  3. 基于JSP的蛋糕销售系统设计与实现答辩ppt模板
  4. Windows系统下的python程序安装
  5. 必须用Python给程序员不懂浪漫平反一波....不管班花还是校花全都跑不掉~
  6. java共同方法_java-现有公共方法的NoSuchMethodError
  7. oracle 10g 扩表空间,Oracle 10g 表空间管理(一)
  8. lora发射和接收原理_无线收发模块LoRa
  9. php 同步退出,phpcms phpsso不能同步退出怎么办
  10. Python+OpenCV:基于KNN手写数据OCR(OCR of Hand-written Data using kNN)