Java图像之自定义角度旋转(实例)

图像的旋转需要调用 Graphics2D 类的rotate()方法,该方法将根据指定的弧度旋转图像。

语法如下:

rotate(double theta)

其中, theta 是指旋转的弧度。

说明:该方法只接受旋转的弧度作为参数,可以使用 Math 类的 toRadians()方法将角度转换为弧度。 toRadians()方法接受角度值作为参数,返回值是转换完毕的弧度值。

实例代码:

/** *//**
 * 旋转图片为指定角度
 *
 * @param bufferedimage
 * 目标图像
 * @param degree
 * 旋转角度
 * @return
 */
 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;// 空的画笔。
 (graphics2d= (img= new BufferedImage(w, h, type))
 .createGraphics()).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;// 返回复制好的图片,原图片依然没有变,没有旋转,下次还可以使用。
 }

 /** *//**
 * 变更图像为指定大小
 *
 * @param bufferedimage
 * 目标图像
 * @param w
 * 宽
 * @param h
 * 高
 * @return
 */
 public static BufferedImage resizeImage(final BufferedImage bufferedimage,
 final int w, final int h) {
 int type= bufferedimage.getColorModel().getTransparency();// 得到透明度。
 BufferedImage img;// 空图片。
 Graphics2D graphics2d;// 空画笔。
 (graphics2d= (img= createImage(w, h, type))
 .createGraphics()).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;
 }

 /** *//**
 * 水平翻转图像
 *
 * @param bufferedimage 目标图像
 * @return
 */
 public static BufferedImage flipImage(final BufferedImage bufferedimage){
 int w = bufferedimage.getWidth();// 得到宽度。
 int h = bufferedimage.getHeight();// 得到高度。
 BufferedImage img;// 空图片。
 Graphics2D graphics2d;// 空画笔。
 (graphics2d = (img = createImage(w, h, bufferedimage
 .getColorModel().getTransparency())).createGraphics())
 .drawImage(bufferedimage, 0, 0, w, h, w, 0, 0, h, null);
 graphics2d.dispose();
 return img;
 } 

总结

以上就是本文的全部内容,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

时间: 2017-09-04

Java图像处理教程之正片叠底效果的实现

前言 本文主要给大家介绍了关于利用Java如何实现正片叠底效果的方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 正片叠底,在Photoshop中是一种混合模式,简单的说就是可以让2个图层的内容融合起来. PS中最佳展示用例 融合的计算公式其实非常简单,就是 A*B/255.(A.B是指的图层A和图层B) 再解释一下就是: A图层中的红色通道和B图层中的红色通道所对应的每一个像素的灰阶值相乘,再被255除.得到一个新的红色通道. 蓝色与绿色通道的操作也是一样的. 实现方法

Java图像处理工具类

本工具类的功能:缩放图像.切割图像.图像类型转换.彩色转黑白.文字水印.图片水印等 复制代码 代码如下: package net.kitbox.util; import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Re

详解Java如何实现图像灰度化

24位彩色图与8位灰度图 首先要先介绍一下24位彩色图像,在一个24位彩色图像中,每个像素由三个字节表示,通常表示为RGB.通常,许多24位彩色图像存储为32位图像,每个像素多余的字节存储为一个alpha值,表现有特殊影响的信息[1]. 在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值,因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值.亮度值),灰度范围为0-255[2].这样就得到一幅图片的灰度图. 几种灰度化的方法 1.分量法:使用RGB三个分量中

java数字图像处理基础使用imageio写图像文件示例

一个BufferedImage的像素数据储存在Raster中,ColorModel里面储存颜色空间,类型等信息,当前Java只支持一下三种图像格式- JPG,PNG,GIF,如何向让Java支持其它格式,首先要 完成Java中的图像读写接口,然后打成jar,加上启动参数- Xbootclasspath/pnewimageformatIO.jar即可. Java中如何读写一个图像文件,使用ImageIO对象即可.读图像文件的代码如下: 复制代码 代码如下: File file = new File

简述Java图像倾斜方法及实例 原创

可以使用 graphics2D 类提供的 shear() 方法设置绘图的倾斜方向,从而使图像实现倾斜的效果.下面,我们一起来看一下它的使用方法和实例. 语法如下: shear(double shx,double shy) shx:水平方向的倾斜量: shy:垂直方向的倾斜量.    实例:在窗体上绘制图像,使图像在水平方向实现倾斜效果.下面是具体代码: public class TiltImage extends JFrame{ private Image img; private MyCanv

Java实现的图像查看器完整实例

本文实例讲述了Java实现的图像查看器.分享给大家供大家参考.具体如下: 1. MyCanvas.java: package PictureViewer; import java.awt.*; import java.awt.event.*; import java.awt.image.*; public class MyCanvas extends Canvas implements ComponentListener{ private BufferedImage bi; private Im

举例解析Java的图像缓冲技术的使用

当图像信息量较大,采用以上直接显示的方法,可能前面一部分显示后,显示后面一部分时,由于后面一部分还未从文件读出,使显示呈斑驳现象.为了提高显示效果,许多应用程序都采用图像缓冲技术,即先把图像完整装入内存,在缓冲区中绘制图像或图形,然后将缓冲区中绘制好的图像或图形一次性输出在屏幕上.缓冲技术不仅可以解决闪烁问题,并且由于在计算机内存中创建图像,程序可以对图像进行像素级处理,完成复杂的图像变换后再显示. [例]小应用程序程序演示图像缓冲显示技术.程序运行时,当鼠标在图像区域内按下时,图像会出现边框,

Java应用程序中创建图像

合成图像 您不必从文件中读取所有的图像 - 您可以创建自己的图像.要创建自己的图像,最灵活的方法是用一个 BufferedImage 对象,它是 Image 类的一个子类,它把图像数据存储在一个可以被访问的缓冲区中.它还支持各种存储像素数据的方法:使用或不使用 alpha 通道.不同种类的颜色模型以及颜色组件的各种精确度.ColorModel 类提供一种灵活的方法定义各种颜色模型,以和 BufferedImage 对象一起使用.为了理解颜色模型工作的基本知识,我们将只使用一个缺省的颜色模型,其颜

使用Java进行图像处理的一些基础操作

图像是由一组像素构成,用二进制形式保存的图片.java语言支持GIF.JPEG和BMP这3种主要图像文件格式.java语言的图像处理功能被封装在Image类中. 图像载入和输出 在java程序中,图像也是对象,所以载入图像时,先要声明Image对象,然后,利用getImage()方法把Image对象与图像文件联系起来.载入图像文件的方法有两个: Image getImage(URL url),url指明图像所在位置和文件名. Image getImage(URL url,String name)

java JDBC系列教程之JDBC类的简析与JDBC的基础操作

什么是JDBC? 概念:JAVA Database Connectivity Javas数据库连接,Java语言操作数据库接口,然后由各个数据库厂商去实现这个接口,提供数据库驱动java包,我们可以使用这套接口,真正执行的是jar驱动包中的实习类 使用一张图让大家更为直观的理解: coder就是写这套接口的程序员 JDBC的使用步骤 1.导入驱动jar包 2.注册驱动 3.获取数据库连接对象 4.定义sql执行语句 5.获取sql语句执行对象 6.执行sql语句返回结果 7.处理结果 8.释放结

Java swing 图像处理多种效果实现教程

项目记录: 1.图像原理 通常图像都是2D,对一副图像,可以看做其宽w*高h的一个二维数组, 即 图像=int[w][h],在w和h位置的每一个 int 值,就是这个点的像素值. 图像处理的本质是:对代表图像二维数组中的值进行重新计算. 2.思路: 将一张图片转化成一个int型癿二维数组 对于每一个像素点大小和颜色进行计算达到图像处理的效果. 在画笔中设置好颜色,填充形状然后将新的图片画出. 3.实现效果 获取像素点方法,首先利用文件imageIO读取图片,然后根据图片长宽进行遍历得到每个像素点

java数据库开发之JDBC基础使用方法及实例详解

1.什么是JDBC JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序 JDBC 数据库访问规范 应用程序 <-> JDBC <-> MySQL驱动 <-> MySQL                  <-> Oracle驱动 <-> Oracle 导入jar包 加载驱动 C

Java Document生成和解析XML操作

一)Document介绍 API来源:在JDK中javax.xml.*包下 使用场景: 1.需要知道XML文档所有结构 2.需要把文档一些元素排序 3.文档中的信息被多次使用的情况 优势:由于Document是java中自带的解析器,兼容性强 缺点:由于Document是一次性加载文档信息,如果文档太大,加载耗时长,不太适用 二)Document生成XML 实现步骤: 第一步:初始化一个XML解析工厂 DocumentBuilderFactory factory = DocumentBuilde

java selenium 常见web UI 元素操作及API使用

本篇介绍我们如何利用selenium 来操作各种页面元素 阅读目录 链接(link) 输入框 textbox 按钮(Button) 下拉选择框(Select) 单选按钮(Radio Button) 多选框 check box 链接(link) <div> <p>链接 link</p> <a href="www.cnblogs.com/tankxiao">小坦克</a> </div> 链接的操作 // 找到链接元素

详解MongoDB数据库基础操作及实例

详解数据库基础操作及实例 废话不多说,直接上代码,注释写的比较清楚,大家参考下, 示例代码: /** * 插入一条DB对象 */ public static void addDBObject(DBCollection collection,BasicDBObject object){ collection.insert(object); } /** * 根据id查询DBObject */ public static DBObject getDBObjectById(String value) t

老生常谈MongoDB数据库基础操作

为了保存网站的用户数据和业务数据,通常需要一个数据库.MongoDB和Node.js特别般配,因为Mongodb是基于文档的非关系型数据库,文档是按BSON(JSON的轻量化二进制格式)存储的,增删改查等管理数据库的命令和JavaScript语法很像.本文将详细介绍MongoDB数据库 数据库 数据库,顾名思义,是数据存储的仓库,主要功能有两个 1.有组织地存放数据 与在磁盘上自己存放文件不同,数据库替用户组织了数据的存储形式,用户只需要按照数据库提供的接口将数据写入,数据便会按照标准的格式被存

Java基于jdbc连接mysql数据库操作示例

本文实例讲述了Java基于jdbc连接mysql数据库操作.分享给大家供大家参考,具体如下: import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class MySQLDemo { private Connection conn = null; pri

Java自动化工具Ant的基础使用教程

Ant 是什么? Apache Ant 是一个基于Java 的生成工具.据最初的创始人 James Duncan Davidson 介绍,这个工具的名称是 another neat tool(另一个整洁的工具) 的首字母缩写. Ant的作用: 生成工具在软件开发中用来将源代码和其他输入文件转换为可执行文件的形式(也有可能转换为可安装的产品映像形式).随着应用程序的生成过程变得更加复杂,确保在每次生成期间都使用精确相同的生成步骤,同时实现尽可能多的自动化,以便及时产生一致的生成版本,这就变得更加重