Java 让图片动起来

java合并图片    经常看到有PS高手,用PS来进行人物合并,当时那个羡慕之情啊,犹如滔滔江水……,     废话了,回正题, 现有我们可以利用java语言,实现同样的图片合并功能,简单的那种, 呵呵     下面大家看看:图片一:    图片二: 合并后的图片为:     下面是示例代码  import com.sun.i 阅读详情

shear(double shx,double sht)
 

rotate(double theta)是 Java 2D 图形 API 中的一个变换方法,它可以让你对绘制的内容进行旋转。这个方法属于Graphics2D类,是 Java Swing 和 AWT 中用于高级绘图的工具。

参数解释
  • theta:旋转角度,以弧度为单位。
    • 正角度表示顺时针旋转
    • 负角度表示逆时针旋转
    • 例如:Math.PI/2(约 1.57)表示旋转 90 度
注意事项
  • 旋转操作会影响后续绘制的所有内容
  • 默认旋转中心是坐标原点 (0,0),通常是窗口左上角
  • 可以通过rotate(theta, x, y)指定旋转中心点
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.geom.AffineTransform;
    import java.io.File;
    import javax.imageio.ImageIO;
    
    public class ImageRotationDemo extends JPanel implements ActionListener {
        private Image image;           // 要旋转的图片
        private double angle = 0;      // 当前旋转角度(弧度)
        private Timer timer;           // 用于定时更新旋转角度
        private int centerX, centerY;  // 旋转中心点
        
        public ImageRotationDemo() {
            try {
                // 加载图片(请确保路径正确)
                image = ImageIO.read(new File("src/a1.png"));
                // 如果没有图片,显示错误信息
                if (image == null) {
                    throw new Exception("图片未找到");
                }
            } catch (Exception e) {
                e.printStackTrace();
                JOptionPane.showMessageDialog(this, "无法加载图片: " + e.getMessage());
            }
            
            // 创建按钮控制旋转
            JButton rotateButton = new JButton("旋转图片");
            rotateButton.addActionListener(e -> {
                if (timer.isRunning()) {
                    timer.stop();
                    rotateButton.setText("继续旋转");
                } else {
                    timer.start();
                    rotateButton.setText("暂停旋转");
                }
            });
            
            // 添加按钮到面板
            JPanel buttonPanel = new JPanel();
            buttonPanel.add(rotateButton);
            
            // 设置主面板布局
            setLayout(new BorderLayout());
            add(buttonPanel, BorderLayout.NORTH);
            
            // 创建定时器,每50毫秒触发一次更新
            timer = new Timer(50, this);
            timer.start();
        }
        
        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            
            if (image != null) {
                // 获取Graphics2D对象,用于高级绘图
                Graphics2D g2d = (Graphics2D) g;
                
                // 启用抗锯齿,使旋转后的图片更平滑
                g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
                                    RenderingHints.VALUE_ANTIALIAS_ON);
                
                // 计算图片的中心点
                centerX = getWidth() / 2;
                centerY = getHeight() / 2;
                
                // 保存当前的图形状态
                AffineTransform originalTransform = g2d.getTransform();
                
                // 移动坐标系到图片中心
                g2d.translate(centerX, centerY);
                
                // 旋转坐标系
                g2d.rotate(angle);
                
                // 绘制图片,注意坐标要调整为相对于中心点的位置
                g2d.drawImage(image, 
                             -image.getWidth(this) / 2,  // X坐标:负的图片宽度的一半
                             -image.getHeight(this) / 2, // Y坐标:负的图片高度的一半
                             this);
                
                // 恢复原始的图形状态,确保后续绘制不受影响
                g2d.setTransform(originalTransform);
                
                // 显示当前旋转角度(转换为度数)
                g2d.drawString("旋转角度: " + Math.round(Math.toDegrees(angle)) + "°", 
                              10, 20);
            } else {
                g.drawString("图片未加载", 50, 50);
            }
        }
        
        @Override
        public void actionPerformed(ActionEvent e) {
            // 每次定时器触发时,增加旋转角度
            angle += 0.05;  // 每次增加0.05弧度(约2.86度)
            
            // 如果角度超过2π(一圈),则重置,避免数值过大
            if (angle > 2 * Math.PI) {
                angle -= 2 * Math.PI;
            }
            
            // 重绘面板,显示新的旋转角度
            repaint();
        }
        
        public static void main(String[] args) {
            JFrame frame = new JFrame("图片旋转演示");
            ImageRotationDemo demo = new ImageRotationDemo();
            frame.add(demo);
            frame.setSize(600, 600);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
        }
    }

【土壤普查实战】Python+ArcGIS随机森林模型一键生成土壤类型栅格图 本文详细介绍了如何利用Python和ArcGIS结合随机森林模型实现土壤类型栅格图的自动化生成,大幅提升土壤普查效率。通过环境准备、数据预处理、模型构建与调优等关键步骤,帮助用户掌握从样本点生成到最终栅格图输出的完整流程,适用于大面积区域或样本点较多的土壤分类任务。 阅读详情

相关推荐

SOI技术实战:从晶圆结构到芯片性能提升的完整解析

本文深入解析SOI(Silicon on Insulator)技术如何通过独特的三明治晶圆结构提升芯片性能,涵盖从220nm SOI层设计到7nm节点的工艺挑战。详细探讨了埋氧层的绝缘优势、性能提升的物理机制,以及AMD处理器和5G射频中的实战应用,为半导体行业提供关键技术洞见。

wdx0123456的博客 960

java实现旋转图像

leetcode题目48

weixin_61876893的博客 1844

Coppelia Sim (v-REP)仿真 机器人3D相机手眼标定与实时视觉追踪 (一)

先把这连个都添加到场景中,然后把kinect的depth相机拖到vision sensor中,把kinect的script也拖到vision sensor中,同时要注意修改深度相机的坐标,及修改script,删掉/rgb部分。由于需要导入到仿真场景中PDF文件不能直接导入,所以需要生成图下文件,使用windows自带的画图工具,生成以厘米为单位的图像格式,大小和标定板的设置大小一直。可以生成需要用的标定板的文件,设置标定板的大小,棋盘格的大小,等相关的参数,之后可以保存PDF文件。设置plane的大小。

hong3731的专栏 1753

java如何利用rotate旋转图片_java实现图片任意角度旋转

本文实例为大家分享了Java实现图片旋转,供大家参考,具体内容如下方法一:普通方法实现图片旋转/*** 图像旋转* @param src* @param angel* @return*/public static BufferedImage Rotate(Image src, double angel) {int src_width = src.getWidth(null);int src_hei...

weixin_33212799的博客 680

MTK metadata中AF模块的移除与配置调整

本文详细介绍了在MTK平台Camera开发中如何移除metadata中的AF(自动对焦)模块。通过系统清理MTK_CONTROL_AF_REGIONS、MTK_CONTROL_MAX_REGIONS等关键配置项,并调整对焦模式及硬件特性声明,确保定制化设备在禁用自动对焦功能后的稳定运行。

q1w3e5r7t9y的博客 570

FPGA,关于安装使用libero IDE V9.2 及其gold floating license配置

3、license安装根据,下面的提示进行,跟随setting up the license server on a host教程操作。1、从官网下载Libero IDE v9.2(如下图中的Libero IDE v9.2 software)4、下载完成license解压包后还需要下载 Daemons license ,地址如下。(2)第一行并不是在内填写,而是直接用您电脑名替换掉(1)修改license.bat前四行是,其务必保持和案例位置相同(避免出错)............

JasonK的博客 4295

旋转图片包括png图片,不会出现失真情况

/** * 图片旋转处理 * @param string $src 图片本地路径 * @param integer $degrees 旋转角度,90逆时针旋转90度,-90顺时针旋转90度 */ public function imgturn($src,$degrees) { $ext = pathinfo($src)['extension'...

reg183的专栏 2418

matlab球面投影(二)

matlab球面投影,想做一个全景相机,不知道,要做成啥样,于是在MATLAB先仿真一下,看下是个啥样子 百度别人做的,复制下面的代码到MATLAB的命令串口下,,网上找了张全景图,可以是bmp,jpg,改程序就可以了 回车运行就可以看到结果。 复制下面代码时,下面的中文注释记得删除,MATLAB是会报错的, close all; clear all; clc [x,y,z]=sphere(50); A=imread('a.JPG'); //名字是自己命名的,记得改 B=warp(x,y,-z,

rjszcb的博客 3161

Java 操作图片进行缩放旋转翻转加水印

谷歌开源框架处理图片实测性能较差,用起来比较方便,建议用Hutool因为只是对awt做的封装不用自己写,性能也高。

Tongyao 2417

昆仑通态,自由串口通讯

软件默认无该功能,需要问客服索要扩展包。

cfqq1989的博客 1536

Android 13.0 开机启动优化之PMS扫描apk耗时相关功能优化

在android13.0的系统rom定制化开发中,在系统中开发产品时,会根据客户要求内置第三方app,这时如果内置app过多,或者安装的app过多,在系统开机的过程中 在pms扫描安装app的时候,就会比较耗时,这时候就需要优化下pms扫描安装app这块的功能代码,用多线程来实现pms扫描安装app,来加快开机时间,接下来 来实现这个功能

安卓兼职framework和app工程师的博客 1333

java 让图片运动_使用css让图片动起来

使用CSS让图片动起来需要使用transform属性transform 属性向元素应用 2D 或 3D 转换。该属性允许我们对元素进行旋转、缩放、移动或倾斜。默认值:none继承性:no版本:CSS3JavaScript 语法:object.style.transform="rotate(7deg)"语法transform: none|transform-functions;值描述测试none定义...

weixin_29343349的博客 280

解决k8s核心组件calico pod资源不创建问题

解决k8s核心组件calico pod资源不创建问题 1.问题描述 由于K8S集群Master节点故障,导致calico网络组件虽然处于Running状态,但是一直无法准备就绪,如下图所示 calico-node-lpt7h运行在master节点,第一时间紧急处理方法就是将其pod删除,让K8S自动重建该pod,使整个集群快速恢复 但是就当我将calico-node-lpt7h pod删除后,该pod始终无法自建,就好像是从来没有这个pod似的 2.解决方法 期初排查时,我觉得可能是由于当前master

江晓龙的博客 4806

利用Java线程Thread实现接口Runnable接口使图片动起来

package com.zlw; import java.awt.*; import javax.swing.*; import java.net.URL; public class SwingAndThread extends JFrame{ private JLabel jl=new JLabel();         //实例化标签 private static Thread t

huangxuanheng的专栏 2907

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

java让静止的东西动起来思想_Java的,怎样让画面动起来。

这个代码中有一个“@@@@”画面,请问怎样让它动起来。importjavax.swing.*;importjava.awt.*;publicclassceshi1extendsJFrame{privateJTextAreatext1;privateString[]hengfu;privateS...这个代码中有一个“@@@@”画面,请问怎样让它动起来。import javax.swing.*;im...

weixin_39628343的博客 250

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

怎么让照片人物嘴巴动起来?这个好用方法你必须知道

不知道大家闲暇时候有没有刷到一些搞笑的动图:这些图片是动态图片,它们都有一个共同的特点那就是嘴巴会动。以上就是小编给大家介绍的让照片人物嘴巴动起来的具体操作方法了,大家看完这几个步骤是否学会了呢?第二步 选择好相应的功能选项之后,我们点击上传相应的图片文件。并且对图片进行裁剪操作,同时我们看到下方有着各种各样的动态照片模板,选择一个喜欢的样式点击进入下一步即可。第三步 选择好相应的模板之后,等待系统进行生成,进度条为百分之百的时候即可制作完成。这款软件,进入软件的首页,点击选择工具选项,找到。

axiuliaokeji的博客 1171

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java 怎么让图片运动,小编给你传授java怎么实现键盘控制图片移动

电脑现已成为我们工作、生活和娱乐必不可少的工具了,在使用电脑的过程中,可能会遇到java怎么实现键盘控制图片移动的问题,如果我们遇到了java怎么实现键盘控制图片移动的情况,该怎么处理怎么才能解决java怎么实现键盘控制图片移动带来的困扰呢,对于这样的问题其实我们只需要电脑第一首先打开java编辑器。再创建一个java项目。第二然后导入java所要用到的数据包。再创建窗口对象。第三然后设置对象的名...

weixin_32052253的博客 2088

java中的如何使物体动起来

可通过添加线程,如下: try { Thread.sleep(30); repaint(); } catch (InterruptedException e) { } }

yt2054的博客 2835

推荐开源项目:MovingImageView — 让图片动起来!

推荐开源项目:MovingImageView — 让图片动起来! MovingImageViewCustom ImageView for moving image around the screen (Android)项目地址:https://gitcode.com/gh_mirrors/mo/MovingImageView 在移动应用开发中,创新的交互设计总能给用户带来惊喜。今天,我们要向您推...

gitblog_00076的博客 796

java窗体中添加图片_在java窗体程序中添加图片的方法

在java窗体程序中添加图片的方法发布时间:2020-06-16 11:24:13来源:亿速云阅读:148作者:Leah这篇文章主要为大家详细介绍了在java窗体程序中添加图片的方法,图文详解容易学习,配合代码阅读理解效果更佳,非常适合初学者入门,感兴趣的小伙伴们可以参考一下。打开eclipse,创建一个java工程项目,创建完后在src下新建一个类Window,由于要插入图片,所以还在工程目录下...

weixin_39961636的博客 1万+

java插入图片_如何在java窗体程序中添加图片

打开eclipse,创建一个java工程项目,创建完后在src下新建一个类Window,由于要插入图片,所以还在工程目录下创建一个文件夹imgs,里面放了一张60*60的图片,创建后的工程目录和图片,如图:在Window.java中写入如图内容,设置窗体的一些基本信息先说一下图片插入的方法。这里是将图片显示在label控件上,然后再将label控件放置到窗体上。免费视频教程学习:java学习在Wi...

weixin_35517357的博客 8283

Java 比较图片_Java图片比对

在自动化测试中,除了普通的值验证,经常还有一些图片验证,比如图片的匹配率,输出图片的差异图片等。本文主要用到了BufferedImage类来操作图片比对和输出差异图片,大体的思路如下:1. 通过ImageIO读入图片,生成相应的BufferedImage实例(Image操作流)2. 修改目标图片的尺寸大小,以适应期望图片的大小(为像素比对做准备)3. 获取每一个(width,height)的ARG...

weixin_27923353的博客 2556

图片比对java,Java图片比对

在自动化测试中,除了普通的值验证,经常还有一些图片验证,比如图片的匹配率,输出图片的差异图片等。本文主要用到了BufferedImage类来操作图片比对和输出差异图片,大体的思路如下:1. 通过ImageIO读入图片,生成相应的BufferedImage实例(Image操作流)2. 修改目标图片的尺寸大小,以适应期望图片的大小(为像素比对做准备)3. 获取每一个(width,height)的ARG...

weixin_36352910的博客 1155

如何用java对图片进行截取,应用java实现图片截取

使用java实现图片截取今天使用java实现图片截取,废话不说,看看代码:package com.image;import java.awt.Rectangle;import java.awt.image.BufferedImage;import java.io.*;import java.util.Iterator;import javax.imageio.ImageIO;import java...

weixin_39963080的博客 1482

java 图片太大了,Java改变图片的大小

01./**02. * 改变图片的大小到宽为size,然后高随着宽等比例变化03. * @param is 上传的图片的输入流04. * @param os 改变了图片的大小后,把图片的流输出到目标OutputStream05. * @param size 新图片的宽06. * @param format 新图片的格式07. * @throws IOException08. */09.public...

weixin_32620265的博客 1387

java怎样根据图片url下载图片

java天生在网络编程方面具有独特的优势,封装了许多网络的api.下面寥寥数句就实现了爬取网络图片的功能。下面我来讲解下java怎样根据图片url下载图片? java怎样根据图片url下载图片 StringimageUrl   URLurl=newURL(imageUrl);   //打开网络输入流   DataInputStreamdis=newDataInputStream(url.openStream());   StringnewImageName=“C:/2.jpg”;   java怎样

weixin_49794051的博客 1250
上一篇: Java 让图片动起来
下一篇: Java 中的AffineTransform 是什么?
wu_android
博客等级 码龄10年 94粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值