//RotateImageDemo.java

import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.awt.geom.AffineTransform;
import javax.swing.*;
import javax.swing.event.*;

//图像旋转演示

public class RotateImageDemo extends JFrame{
JSlider jSlider = new JSlider(JSlider.HORIZONTAL,0,180,0); //设定旋转角度
ImagePane imagePane=new ImagePane(); //绘制图像的面板

public RotateImageDemo(){
super("图像旋转演示"); //调用父类构造函数
jSlider.setPaintTicks(true); //绘制标志位
jSlider.setMajorTickSpacing(45); //设置标志尺寸
jSlider.setMinorTickSpacing(5);
jSlider.setPaintLabels(true); //绘制出数字
jSlider.setBorder(new javax.swing.border.TitledBorder(BorderFactory.createEmptyBorder(), "图像的旋转度")); //设置边框
jSlider.addChangeListener(new ChangeListener() { //滑动条jSlider事件处理
public void stateChanged(ChangeEvent ce) {
int value=((JSlider) ce.getSource()).getValue(); //获取设置值
double angle =(float)value/180*Math.PI ; //得到旋转角度(弧度制)
imagePane.ratoteImage((float)angle); //旋转图像
}
});

Container container=getContentPane(); //得到窗口容器
imagePane.loadImage("image0.jpg"); //装载图片
container.add(imagePane,BorderLayout.CENTER); //增加组件到容器上
container.add(jSlider,BorderLayout.SOUTH);

setSize(250,250); //设置窗口尺寸
setVisible(true); //设置窗口可视
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序
}

public static void main(String[] args){
new RotateImageDemo();
}

class ImagePane extends JPanel {
Image image;
BufferedImage bufImage; //用于显示的缓冲区图像
BufferedImage originalBufImage; //原始缓冲区图像
Graphics2D bufImageG; //缓冲区图像的图形环境

public void loadImage(String fileName) {
image = this.getToolkit().getImage(fileName); //取得图像
MediaTracker mt = new MediaTracker(this); //实例化媒体加载器
mt.addImage(image, 0); //增加图像到加载器中
try {
mt.waitForAll(); //等待图片加载
} catch (Exception ex) {
ex.printStackTrace(); //输出出错信息
}
originalBufImage = new BufferedImage(image.getWidth(this),image.getHeight(this),BufferedImage.TYPE_INT_ARGB); //创建原始缓冲区图像
bufImage = originalBufImage;
bufImageG = bufImage.createGraphics(); //创建bufImage的图形环境
bufImageG.drawImage(image, 0, 0, this); //传输源图像数据到缓冲区图像中
repaint(); //重绘组件
}
//过滤图像
public void ratoteImage(double angle) {
if (bufImage == null)
return; //如果bufImage为空则直接返回
BufferedImage filteredBufImage =new BufferedImage(image.getWidth(this) ,image.getHeight(this),BufferedImage.TYPE_INT_ARGB); //过滤后的图像
AffineTransform transform = new AffineTransform(); //仿射变换对象
transform.rotate(angle,125,75); //旋转图像
AffineTransformOp imageOp = new AffineTransformOp(transform, null);//创建仿射变换操作对象
imageOp.filter(originalBufImage, filteredBufImage);//过滤图像,目标图像在filteredBufImage
bufImage = filteredBufImage; //让用于显示的缓冲区图像指向过滤后的图像
repaint(); //重绘组件
}

//重载容器的paintComponent()方法
public void paint(Graphics g) {
super.paintComponent(g);
if (bufImage != null) {
Graphics2D g2 = (Graphics2D) g;
g2.drawImage(bufImage,0,0,this); //绘制图片
}
}
}
}

image0.jsp

转载于:https://www.cnblogs.com/liao-pxsoftware15/p/7633200.html

java编程——图片旋转相关推荐

  1. java swing 图片旋转_Java图片旋转,背景透明化

    import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; import java.awt.image.Buffere ...

  2. java web图片旋转_修正web项目中图片旋转方向

    # 使用 imagemagick 旋转 查看照片 EXIF 信息,Exif 中的图片旋转信息储存在``Orientation``中. ``` identify -verbose xxx.jpg ``` ...

  3. Java 使图片旋转以及水平翻转垂直翻转(详细且可用)

    最近在做小型游戏,遇到了要翻转图片的苦恼,经过我一下午的研究,终于发现了一种好用的方法. 部分代码来源于别人,我在这个基础上修改了下,变得更好用了,之前的别人Image输入都是BufferedImag ...

  4. java 实现图片旋转_java实现图片旋转

    方法一:普通方法实现图片旋转 /** * 图像旋转 * @param src * @param angel * @return */ public static BufferedImage Rotat ...

  5. java编程图片显示爱心_java swing画图片爱心

    第一次用swing做一个可视化程序,写第一篇随笔,有写的不好的地方请多多见谅.上个星期三在网上看到一个画爱心的软件,就想着自己用java也实现一个程序,画爱心用到的数学函数知识在网上百度的,不是本人原 ...

  6. java 图片旋转_Java实现图片旋转、指定图像大小和水平翻转|chu

    本文实例为大家分享了Java实现图片旋转.指定图像大小.水平翻转,供大家参考,具体内容如下 package com.zeph.j2se.image; import java.awt.Graphics2 ...

  7. java 判断图片否旋转,Java实现图片任意角度旋转

    Java普通方法实现图片旋转:import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.Image; import  ...

  8. (Java版)颈椎病治疗最近云海学长一直对着电脑改bug, 颈椎不舒服, 希望各位小伙伴帮云海学长治治提供一张图片, 将图片旋转后再发给云海学长, 这样学长看图的时候就需要歪着脖子, 时间久了,

    2. 颈椎病治疗 最近云海学长一直对着电脑改bug, 颈椎不舒服, 希望各位小伙伴帮云海学长治治 提供一张图片, 将图片旋转后再发给云海学长, 这样学长看图的时候就需要歪着脖子, 时间久了, 颈椎病就 ...

  9. java 文字水印 旋转_利用Thumbnailator轻松实现图片缩放、旋转与加水印

    概述 Thumbnailator 是一个开源的 Java 项目,它提供了非常简单的 API 来对图片进行缩放.旋转以及加水印的处理. 有多简单呢?简单到一行代码就可以完成图片处理.形式如下: Thum ...

  10. java图片上传被旋转,在其他大牛那看到的java手机图片上传旋转问题的解决方法...

    // 将图片文件转化为字节数组字符串,并对其进行Base64编码处理 //Base64所用包:org.apache.commons.codec.binary.Base64 public static ...

最新文章

  1. csu1377Putter HOJ12816
  2. python内建集合模块collections功能,计数,有序,双向队列
  3. elk+redis分布式分析nginx日志
  4. CentOS7手动修改系统时间
  5. python asyncio理解_深入理解asyncio(二)
  6. Java学习之连接数据库
  7. (2)打两拍systemverilog与VHDL编码
  8. SpringCloud工作笔记041---com.fasterxml.jackson.databind.ObjectMapper的使用
  9. leetcode题库174 地下城游戏
  10. java jdbc mysql util_Java,Scala:JDBCUtil,MySqlUtil,PhoenixJDBC
  11. Kongzue的APP拍照相册选择工具
  12. 黑莓系统包服务器,黑莓os10.3.3.2163
  13. 吉林大学计算机数据中心排名,高校考研学霸人数排行:吉林大学5000排名第13
  14. python秒杀脚本 拼多多_点击劫持漏洞之理解 python打造一个挖掘点击劫持漏洞的脚本...
  15. WindowsLive™ OneCare™初体验
  16. prisma1.0实践
  17. 腾讯云配置密钥使用putty登录 PuTTY实现Windows向Linux上传文件
  18. 四 IDEA 项目另存为处理
  19. div中的内容居中对齐
  20. 麒麟服务器v10系统安装时报错,银河麒麟V10服务器版本编译安装php7.2.12

热门文章

  1. Java8 中的真的 Optional 很强大,你用对了吗?
  2. php生成xml报错101,php编译报错大全
  3. java rbac 开源_java web快速开源开发框架RoubSite-admin
  4. vue 跳转到选项卡_使用 DevTools 新增的 Issues 选项卡发现网页问题
  5. python计算器gui设计_python 实现简单的计算器(gui界面)
  6. sparksql 保存点_Spark SQL笔记整理(三):加载保存功能与Spark SQL函数
  7. 连接linux常用的工具
  8. pythonATM,购物车项目实战2,主函数入口
  9. python如何发布项目_python如何发布自已pip项目的方法步骤
  10. dataframe两个表合并_使用Pandas关联Excel表操作示例