Java中实现图片的旋转功能

Java中实现图片的旋转功能

一:介绍

主要就是利用Java swing中的一些东西实现的,这个程序就是让图片在GUI页面中显示出来并且点击按钮可以让图片实现旋转的功能。

二:代码

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO; 
public class ImageChange{
	JFrame jf = new JFrame();
	public static void main(String[] args){
		new ImageChange();
	}

	public ImageChange(){
		inGui();	
	}

	public void inGui(){
	   TransJPanel canvas = new TransJPanel();
	   jf.add(canvas);
	   jf.setBounds(0,0,600,680);
	   jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	   jf.setVisible(true);
	}
}


// 这是一个面板的类
class TransJPanel extends JPanel{
	  JButton jb = new JButton("旋转");
	  BufferedImage  img;
	  BufferedImage  img2;
      //旋转的角度。因为工程需要,代码中直接写成了90,可以根据具体需要动态修改,以符合实际情况
	  int roteAngle = 0;
	  public TransJPanel(){
		  try{
			  img = ImageIO.read(new File("images\\meinu.png"));
			  img2 = ImageIO.read(new File("images\\meinufan.png"));
		  }catch(Exception e){
			  System.out.println("数据读入有错");
		  }
		  this.add(jb);
		  jb.addActionListener( new ActionListener(){	
			public void actionPerformed(ActionEvent e){	
				System.out.println("待处理 旋转按钮");
				setRotate();
			}
		});
	 }
	 
     public void paintComponent(Graphics g){
       super.paintComponent(g);
       g.drawImage(img,0,0,this);      // 第一个图显示在(0,0)的位置;
       drawTransImage(g,img.getWidth()+20,img.getHeight()+20);
    }

     // 这是显示另外一个图片的方法
     public void drawTransImage(Graphics g,int drawx,int drawy){
         int w = img2.getWidth();
         int h = img2.getHeight();
		 Graphics2D g2 = (Graphics2D)g;
		 // 设置一个新的原点
		 g2.translate(drawx,drawy);
		 // 如果旋转的角度不为0 ,一般点击按钮这个值都是在一直改变的
		 if (roteAngle != 0){
			 // 旋转变换, [旋转弧度,x,y]   (>> 右移一位,就是缩小两倍)  旋转图像的原点确实就在 长和宽的一半处的位置
			 g2.rotate(Math.toRadians(roteAngle),w >> 1,h >> 1);
		 }

		 g2.drawImage(img2,0,0,w,h,0,0,w,h,null);
		 g2.translate(-drawx,-drawy);    // 把坐标原点给变回去;
	 }
	 
     // 旋转的,%360的作用是不让它超过360°
     public void setRotate(){
         roteAngle += 45;    // 这句用于设置每次旋转的角度
         roteAngle %= 360;
         repaint();
	 }
}

三:效果展示在这里插入图片描述

在这里插入图片描述

四:总结

这个代码里面有个问题,就是点击按钮让图片实现旋转的时候,画布中就会多出一个按钮的图片的出来(不过这个按钮是没有用的),暂时不知道如何解决,感觉我也不会回来解决这个问题了。哈哈哈

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java后端获取前端图片可以通过以下步骤实现: 1. 前端将图片转换为Base64编码,并通过POST请求发送给后端。 2. 后端接收到请求后,读取POST请求的Base64编码字符串。 3. 将Base64编码字符串转换为字节数组。 4. 将字节数组转换为图片格式,保存到本地或者存储到数据库。 以下是一个简单的示例代码: 前端代码: ```html <input type="file" accept="image/*" onchange="readImage(this)"> <script> function readImage(input) { if (input.files && input.files[0]) { var reader = new FileReader(); reader.onload = function (e) { var image = e.target.result; //将图片转换为Base64编码,发送到后端 $.ajax({ type: "POST", url: "/uploadImage", data: { "image": image }, success: function (data) { alert("上传成功"); }, error: function (xhr, textStatus, error) { alert("上传失败:" + error); } }); }; reader.readAsDataURL(input.files[0]); } } </script> ``` 后端代码: ```java @PostMapping("/uploadImage") public String uploadImage(@RequestParam("image") String imageBase64) { //将Base64编码字符串转换为字节数组 byte[] imageBytes = Base64.getDecoder().decode(imageBase64.split(",")[1]); //将字节数组转换为图片格式 BufferedImage image = null; try { image = ImageIO.read(new ByteArrayInputStream(imageBytes)); } catch (IOException e) { e.printStackTrace(); } //保存图片到本地或者存储到数据库 //... return "success"; } ``` 需要注意的是,在实际应用,需要对上传的图片进行大小、格式等限制,以确保系统的安全性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值