算法原理https://blog.csdn.net/xiaoshen0121/article/details/79428344?ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%9B%BE%E5%83%8F%E6%97%8B%E8%BD%AC&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-8-79428344.nonecase&spm=1018.2226.3001.4187

package img;import javax.imageio.ImageIO;import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;public class main {public static void main(String[] args) throws Exception {// 读取图片BufferedImage bufImage = ImageIO.read(new File("F:\\Files\\javaFile\\Image\\src\\img\\OrignImg.jpg"));rotateImage(bufImage,35);System.out.println("Successfully!");}public static void rotateImage(BufferedImage image,double degree) throws Exception {degree=Math.toRadians(360-degree);int w = image.getWidth();  int h = image.getHeight();  int new_w=(int) Math.ceil(Math.abs(w*Math.cos(degree)) + Math.abs(h*Math.sin(degree)));int new_h=(int) Math.ceil(Math.abs(h*Math.cos(degree)) + Math.abs(w*Math.sin(degree)));BufferedImage rotImg= new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);for (int x = 0; x < new_w; x++) {  for (int y = 0; y < new_h; y++) {  int x1= (int) Math.round(x*Math.cos(degree)+y*Math.sin(degree)-0.5*new_w*Math.cos(degree)-0.5*new_h*Math.sin(degree)+0.5*w);int y1= (int) Math.round(-x*Math.sin(degree)+y*Math.cos(degree)+0.5*new_w*Math.sin(degree)-0.5*new_h*Math.cos(degree)+0.5*h);if(x1>=0&&x1<w&&y1>=0&&y1<h) {rotImg.setRGB(x, y, image.getRGB(x1, y1));}else {rotImg.setRGB(x, y, new Color(255, 255, 255).getRGB());}}  } // 把修改过的 rotImg 保存到本地ImageIO.write(rotImg, "JPEG", new File("F:\\Files\\javaFile\\Image\\src\\img\\rot.jpg"));}
}

实现效果

java实现图像旋转相关推荐

  1. java图像处理之实现任意角度图像旋转

    原理及步骤: 1.旋转角度:图像顺时针或逆时针旋转的角度,以θ表示,需要用户输入: 2.旋转中心:一般以图像中心作为旋转中心,周围像素围绕其旋转: 3.画布大小:由于图像旋转后产生的图像宽和高与原始图 ...

  2. CCF201503-1 图像旋转(100分)【数学计算】

    试题编号: 201503-1 试题名称: 图像旋转 时间限制: 5.0s 内存限制: 256.0MB 问题描述: 问题描述 旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度. ...

  3. Java平台图像光学标记处理API-Aspose.OMR首次公开发行!来看看有哪些功能

    Aspose一直致力于研究用于执行文件间格式转换,对文件进行操作(例如创建.版本.操作等)的文件格式API.好消息来啦!专门用于Java平台识别光学标识并管理转换的API控件Aspose.OMR fo ...

  4. 基于Java的图像象素处理(1)

    原文作者: Richard G. Baldwin 原文的地址: http://www.developer.com/java/other/article.php/3403921 翻译: Olajavam ...

  5. opencv java 灰度_如何使用Java将图像转换为灰度?

    在Java语言编程中,如何使用Java将图片转换为灰度? 注意:需要访问网址:http://book2s.com/java/jar/o/opencv/download-opencv-3.2.0-0.h ...

  6. OpenCV中图像旋转(warpAffine)算法的实现过程

    在OpenCV中,目前并没有现成的函数直接用来实现图像旋转,它是用仿射变换函数cv::warpAffine来实现的,此函数目前支持4种插值算法,最近邻.双线性.双三次.兰索斯插值,如果传进去的参数为基 ...

  7. 经验 | OpenCV图像旋转的原理与技巧

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|OpenCV学堂 01 引言 初学图像处理,很多人遇到的 ...

  8. OpenCV图像旋转的原理与技巧

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 转自|OpenCV学堂 01 引言 初学图像处理,很多人遇到的第一 ...

  9. R语言使用persp函数绘制三维图像实战(3D):自定义3D图、图像旋转、添加轴标签

    R语言使用persp函数绘制三维图像实战(3D):自定义3D图.图像旋转.添加轴标签 目录

最新文章

  1. 数据结构与算法(3-1)栈(顺序栈、两栈共享空间、链栈、栈的计算器)
  2. EventBus简单分析
  3. python找出值为nan_Python Numpy:找到list中的np.nan值方法
  4. 记录一下MATLAB中ode45函数求解非刚性微分方程
  5. 网站为什么要做优化?
  6. 【深度学习】何恺明经典之作—2009 CVPR Best Paper | Dark Channel Prior
  7. django权限二(多级菜单的设计以及展示)
  8. python字符串_python字符串格式化
  9. makefile编写---:= ?= += =的区别
  10. CentOS 7 配置DHCP服务器
  11. PostgreSQL 的 target_list分析(三)
  12. 编程题_排列组合问题
  13. 推荐系统 --- 工程
  14. 大学为什么没有UI设计专业
  15. 大型医院 HIS源码
  16. 题9.5:有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输人10个 学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓 名、3门课程成绩、平均分数)。
  17. 浙大PatC语言练习50-76
  18. ultraos win10启动盘_ultraiso制作u盘启动盘教程图文详解
  19. react使用antd-mobile做自定义替换头像功能
  20. 百度图像识别API调用(python)

热门文章

  1. 【C语言】函数 ---- 函数的嵌套调用和链式访问、函数的声明和定义、变量的声明和定义、函数递归与迭代、递归时的栈溢出问题
  2. 配置msp432e401y的ADC采样达到2M
  3. 使用CyclicBarrier模拟百米赛跑
  4. plotly可视化绘制双坐标轴图
  5. 干货 | 以模型为中心,携程契约系统的演进
  6. 计算机专业学生的7个建议
  7. CodeBlocks安装及指南
  8. 《成为学习高手》小记
  9. 解决 win10 家庭版环境下 MySQL 的ODBC驱动下载及安装
  10. 编写强力黑白棋的历程