Java中Image的水平翻转、缩放与自由旋转操作

简介:
老生常谈了,直接看代码。

bufferedimage.getColorModel().getTransparency()以获得原始图片透明度用于生成缓存图,在缓存图进行相应操作即可。

/**
     * 旋转图片为指定角度
     * 
     * 
@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);
        graphics2d.drawImage(bufferedimage, 
00null);
        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, 
00, w, h, 00, 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, 
00, w, h, w, 00, h, null);
        graphics2d.dispose();
        
return img;
    }

本文转自 cping 51CTO博客,原文链接:http://blog.51cto.com/cping1982/130066

相关文章
|
5月前
|
Java BI 数据处理
如何在Java中实现Excel操作
如何在Java中实现Excel操作
|
6月前
|
存储 Java
java用modbus4j的RTU去操作那些寄存器(线圈,保持,输入,离散输入寄存器)
java用modbus4j的RTU去操作那些寄存器(线圈,保持,输入,离散输入寄存器)
213 0
|
6月前
|
Java 数据库 数据安全/隐私保护
Java操作Excel文件导入导出【内含有 jxl.jar 】
Java操作Excel文件导入导出【内含有 jxl.jar 】
87 0
|
5月前
|
存储 Java 索引
Java ArrayList操作指南:如何移除并返回第一个元素
通过上述方法,你可以方便地从Java的 `ArrayList` 中移除并返回第一个元素。这种操作在日常编程中非常常见,是处理列表时的基本技能之一。希望这篇指南能帮助你更好地理解和运用Java的 `ArrayList`。
60 4
|
5月前
|
分布式计算 DataWorks Java
DataWorks操作报错合集之使用ODPS Tunnel Upload功能时,遇到报错:Java 堆内存不足,该如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
5月前
|
SQL 缓存 Java
使用MyBatis优化Java持久层操作
使用MyBatis优化Java持久层操作
|
5月前
|
Java API 开发者
Java中的文件I/O操作详解
Java中的文件I/O操作详解
|
5月前
|
Java BI 数据处理
如何在Java中实现Excel操作
如何在Java中实现Excel操作
|
6月前
|
Java
使用kafka-clients操作数据(java)
使用kafka-clients操作数据(java)
123 6
|
6月前
|
安全 Java 程序员
在Java中,finalization是一种机制,允许对象在被垃圾收集器回收之前执行一些清理操作。
【6月更文挑战第24天】Java中的finalization机制允许对象在被垃圾收集前执行清理,以释放系统资源或处理敏感信息。`finalize()`方法用于定义此类操作,但它不是可靠的资源管理策略,因为调用时机不确定且可能影响性能。尽管可用于清理外部资源或作为保护措施,但应避免依赖finalization,而应优先采用手动资源管理,遵循“创建者负责”原则。
33 1