图片旋转工具类(分为:顺时针旋转90度、逆时针旋转90度、旋转180度、水平旋转、垂直旋转)

Numpy 进阶(二) —— 对图像进行角度旋转、水平、垂直镜像操作! 提出需求 用 Python 对图片做旋转、镜像操作时,小伙伴们可能首先想到的是 PIL 、Opencv 等图像处理程序包,只需要一行代码就可以实现目标转换。 这样做的确能够实预期目标,但图像是怎么实现旋转的,这个过程对我们来说就像一个黑盒子,很陌生,为了了解图像变换机制,这篇文章借助 Numpy 数组来实现图像翻转等操作 原理讲解 一张图片的本质是由 a(长) × b(宽) 与图像一样大小的矩阵的... 阅读详情

package com.chenb.test;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

//图片旋转工具类
public class ImageUtils2 {
	
	//顺时针旋转90度(通过交换图像的整数像素RGB 值)
	public static BufferedImage rotateClockwise90(BufferedImage bi) {
		int width = bi.getWidth();
		int height = bi.getHeight();
		BufferedImage bufferedImage = new BufferedImage(height, width, bi.getType());
		for (int i = 0; i < width; i++)
			for (int j = 0; j < height; j++)
				bufferedImage.setRGB(height - 1 - j, width - 1 - i, bi.getRGB(i, j));
		return bufferedImage;
	}

	//逆时针旋转90度(通过交换图像的整数像素RGB 值)
	public static BufferedImage rotateCounterclockwise90(BufferedImage bi) {
		int width = bi.getWidth();
		int height = bi.getHeight();
		BufferedImage bufferedImage = new BufferedImage(height, width, bi.getType());
		for (int i = 0; i < width; i++)
			for (int j = 0; j < height; j++)
				bufferedImage.setRGB(j, i, bi.getRGB(i, j));
		return bufferedImage;
	}
	
	//旋转180度(通过交换图像的整数像素RGB 值)
		public static BufferedImage rotate180(BufferedImage bi) {
			int width = bi.getWidth();
			int height = bi.getHeight();
			BufferedImage bufferedImage = new BufferedImage(width,height,bi.getType());
			for (int i = 0; i < width; i++)
				for (int j = 0; j < height; j++)
					bufferedImage.setRGB( width - i-1,height-j-1, bi.getRGB(i, j));
			return bufferedImage;
		}
		
	//水平翻转
		public static BufferedImage rotateHorizon(BufferedImage bi) {
			int width = bi.getWidth();
			int height = bi.getHeight();
			BufferedImage bufferedImage = new BufferedImage(width,height,bi.getType());
			for (int i = 0; i < width; i++)
				for (int j = 0; j < height; j++)
					bufferedImage.setRGB( width - i-1,j, bi.getRGB(i, j));
			return bufferedImage;
		}
	//垂直翻转
		public static BufferedImage rotateVertical(BufferedImage bi) {
			int width = bi.getWidth();
			int height = bi.getHeight();
			BufferedImage bufferedImage = new BufferedImage(width,height,bi.getType());
			for (int i = 0; i < width; i++)
				for (int j = 0; j < height; j++)
					bufferedImage.setRGB(i,height-1-j, bi.getRGB(i, j));
			return bufferedImage;
		}
		
		//main方法,用于测试
	public static void main(String[] args) throws IOException {
		 // 测试来源图片  
        String pathname = System.getProperty("user.home") + File.separator + "Desktop" + File.separator + "testmm.jpg";  
        File file = new File(pathname);  
        // 测试生成图片  
        String testPath = System.getProperty("user.home") + File.separator + "Desktop" + File.separator + "test.jpg";  
        File outFile = new File(testPath);  
        
        //顺时针旋转90度测试
        BufferedImage image = ImageIO.read(file);  
        image=rotateClockwise90(image);
        //ImageIO.write(image, "png", outFile);  
       
        //逆时针旋转90度测试
        BufferedImage image2 = ImageIO.read(file);  
        image2=rotateCounterclockwise90(image2);
        //ImageIO.write(image2, "png", outFile); 
        
        //旋转180度测试
        BufferedImage image3 = ImageIO.read(file);  
        image3=rotate180(image3);
        //ImageIO.write(image3, "png", outFile);  
       
        //水平旋转测试
        BufferedImage image4 = ImageIO.read(file);  
        image4=rotateHorizon(image4);
        //ImageIO.write(image4, "png", outFile);
        
        //垂直旋转测试
        BufferedImage image5 = ImageIO.read(file);  
        image5=rotateVertical(image5);
        ImageIO.write(image5, "png", outFile);
	}
}


原图:



顺时针旋转90度后:



逆时针旋转90度后:



旋转180度后:



水平旋转后:



垂直旋转后:



镜像翻转_Numpy 进阶(二) — 对图像进行旋转、水平、垂直镜像操作! 原理讲解用 Python 对图片做旋转、镜像操作时,小伙伴们可能首先想到的是 PIL 、Opencv 等图像处理程序包,只需要一行代码就可以实现目标转换。这样做的确能够实预期目标,但图像是怎么实现旋转的,这个过程对我们来说就像一个黑盒子,很陌生,为了了解图像变换机制,这篇文章借助 Numpy 数组来实现图像翻转等操作原理讲解一张图片的本质是由 a(长) × b(宽) 与图像一样大小的矩阵... 阅读详情

相关推荐

Pytorch之Rot旋转

整理记录一下PyTorch中旋转函数rot90的使用方法。 参考目录: ①PyTorch官方用法 torch.rot901 使用背景2 函数简介3 实战效果3.1 顺时针旋转90°3.2 逆时针旋转90°3.3 逆时针旋转180°3.4 逆时针旋转前2个维度 1 使用背景 对于一个nnn维张量,如果想要对某2个维度进行旋转,可以调用torch.rot90()函数。 2 函数简介 调用格式: torch.rot90(Tensor, k, dim) Note: 第一个形参Tensor是你准备进行旋转的张量.

Ton的博客 7090

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

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

Tongyao 2417

java 将图片进行180度旋转

java 将图片进行180度旋转 java 将图片进行180度旋转 java 将图片进行180度旋转

BufferedImage旋转180度

BufferedImage var2 = new BufferedImage(var1.width, CustomerHtmlImageGenerator.editorPane.getPreferredSize().height, 2); Graphics2D var3 = var2.createGraphics(); AffineTransform trans = new AffineTransform(); trans.rotate(Math.PI, dimension.wid.

以爱护甲,爱满枫林。 1446

保姆级教程:用Protege 5.5.0从零构建你的第一个知识图谱(附实战案例文件)

本文提供了一份详细的Protege 5.5.0使用指南,从零开始构建知识图谱。通过'中国古代文人关系网'实战案例,涵盖软件安装、本体创建、属性定义、实例填充到高级功能应用的全流程,帮助初学者快速掌握知识建模的核心技能。

weixin_26808205的博客 234

HI3403烧录全流程:从ToolPlatform安装到eMMC配置避坑指南

本文详细介绍了海思HI3403芯片的完整烧录流程,涵盖从ToolPlatform工具安装、驱动配置到eMMC分区策略的实战指南。文章深入解析了BurnTool工具的使用方法、关键配置项,并提供了烧录过程中的常见问题排查与解决方案,旨在帮助开发者高效、稳定地完成HI3403嵌入式系统的部署。

weixin_29279101的博客 333

图片旋转工具类(分为:顺时针旋转90度、逆时针旋转90度)

图片旋转工具类(分为:顺时针旋转90度、逆时针旋转90度),BufferImage 处理图片旋转

xiaojiang博客 740

紫光PG2L100H平台DDR3 IP核调试实战:从AXI接口到状态机设计的避坑指南

本文详细介绍了在紫光PG2L100H FPGA平台上调试DDR3 IP核的实战经验,重点解析了AXI接口的特殊行为和状态机设计的关键技巧。通过具体代码示例和调试方法,帮助开发者规避常见陷阱,实现高性能DDR3控制器设计,达到1.2GB/s的稳定带宽。

weixin_28717969的博客 218

Java旋转图片工具类

前言: 本文提供可以任意角度(最小精度1度),旋转图片的Java工具类,旋转后的图片不会失真或丢失边角,根据角度参数,重新绘制图片,达到无损旋转的目的。 一.图片工具类 import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Rectangle; import ...

五道口 9452

TSMaster MBD模块实战:如何用Simulink模型快速搭建汽车电子测试环境

本文实战演示了如何利用TSMaster的MBD模块,将Simulink模型快速部署为汽车电子自动化测试环境的核心。通过建立模型与TSMaster系统变量的实时数据通道,并利用数据仓库统一数据定义,工程师能无缝连接算法仿真与真实总线网络,显著提升从模型到HIL测试的验证效率。

php55的博客 207

SNN系列|编码篇(2)时序编码

Tempotral Coding 选择编码方法是要根据编码对象以及模型如何处理编码信息进行选择,如下是一种时序信息的编码对比: Threshold-based encoding 又称为tempotral contrast,该方法可以用于编解码一段序列,当差值超过阈值时发放脉冲,阈值是根据编码的序列自适应变化的。 使用该编码方法时,实值序列最好是沿时间变化的,因为在根据差分决定是否发放脉冲后,脉冲的顺序与差分顺序有关。 Time-to-first spike coding 该编码方法将信息用神经元首次

Tianlong Lee的博客 1万+

【183】Java8对图片做顺时针旋转90度、逆时针旋转90度、旋转180度、水平翻转、垂直翻转操作。

Java8对图片做顺时针旋转90度、逆时针旋转90度、旋转180度、水平翻转、垂直翻转操作。

zhangchao19890805的专栏 3299

Cosmos Transfer2.5多模态AI模型部署与优化实战

多模态AI技术通过融合文本、图像、代码等不同模态数据,实现跨模态理解与生成。其核心原理基于Transformer架构的注意力机制,结合对比学习实现模态对齐。这类技术在智能内容创作、跨模态搜索等领域具有重要价值,尤其适合电商营销图文生成、UI设计转代码等场景。Cosmos Transfer2.5作为先进的多模态模型,支持8192 tokens长文本窗口和混合模态输入,实测推理速度达17.5 samples/s(T4显卡)。部署时需注意FlashAttention优化可提升3倍长文本处理效率,8-bit量化则能

weixin_29038303的博客 281

OpenCV Mat结构的图片 旋转顺时针90度 180度 270度 逆时针90度

Mat TestRorateMat:: matRotateClockWise90(Mat src) { if (src.empty()) { qDebug()<<"RorateMat src is empty!"; } // 矩阵转置 transpose(src, src); //0: 沿X轴翻转; >0: 沿Y轴翻转; <0: 沿X轴和Y轴翻转 flip(src, src, 1

hujiameihuxu的专栏 2万+

uniapp - 最新实现hbuilder项目运行到ios基座或苹果ios真机设备详细教程,如何在ios苹果手机上真机运行测试,IOS自定义基座在线打包调试(uniapp项目如何在苹果手机上运行调试)

uni-app,苹果,app,ios,设备,自定义基座,运行app到苹果手机,mac电脑,Xcode,hbuilderX,运行ios基座调试Uniapp,无需打包,苹果证书,ipa,运行失败,报错,无法启动,连接失败,出错,详细教程,如何解决这个问题,怎么办,申请iOS证书,运行项目到iOS基座,打包ios自定义基座,在iOS真机上运行,新手小白,超级详细的教程,dcloud如何苹果ios系统真机测试,调试基座失败,真机调试ios app,App基座安装后无法打开问题,真机运行时检测不到手机的问题或者基座安

✅ 精选推荐文章 1万+

西南科技大学数字电子技术实验七(4行串行累加器设计及FPGA实现)FPGA部分

/在k=1时输入1,并在k=0时运算。//在k=1时输入0,并在k=0时运算。//在k=1时输入1,并在k=0时运算。//在k=1时输入0,并在k=0时运算。//在k=1时输入1,并在k=0时运算。//在k=1时输入1,并在k=0时运算。//在k=1时输入0,并在k=0时运算。//在k=1时输入0,并在k=0时运算。三、程序清单(每条语句必须包括注释或在开发窗口注释后截图)四、综合、管脚分配、生成输出文件、下载(所有步骤截图)五、仿真程序清单、波形(波形截图必做,截图!.k(k),//开关。

Welcome To My6n Blog 4332

OpenCV Mat结构的图片 旋转顺时针90度 180度 270度 逆时针90度

Mat matRotateClockWise90(Mat src) { if (src.empty()) { qDebug()<<"RorateMat src is empty!"; } // 矩阵转置 transpose(src, src); //0: 沿X轴翻转; >0: 沿Y轴翻转; <0: 沿X轴和Y轴翻转 flip(src, src, 1);// 翻转模式,flipCode == 0垂直翻转(沿X轴翻转),flipCode>0水平翻转(沿Y轴翻转).

weixin_42005898的博客 1956

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

python opencv numpy旋转图片

python旋转图片 背景 在图像处理中,有的时候会有对图片进行角度旋转的处理,尤其是在计算机视觉中对于图像扩充,旋转角度扩充图片是一种常见的处理。这种旋转图片的应用场景也比较多,比如用户上传图片是竖着的时候,不好进行处理,也需要对其进行旋转,以便后续算法处理。常见的旋转处理有两种方式,一种是转化为numpy矩阵后,对numpy矩阵进行处理,另外一种是使用opencv自带的函数进行各种变换处理,以实现旋转角度的结果。 原始图像: opencv函数 旋转中常用的函数有以下几个函数 cv2.transpos

uncle_ll的博客 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python顺时针旋转90度_Numpy 进阶(二) —— 对图像进行角度旋转、水平、垂直镜像操作!...

提出需求用 Python 对图片做旋转、镜像操作时,小伙伴们可能首先想到的是 PIL 、Opencv 等图像处理程序包,只需要一行代码就可以实现目标转换。这样做的确能够实预期目标,但图像是怎么实现旋转的,这个过程对我们来说就像一个黑盒子,很陌生,为了了解图像变换机制,这篇文章借助 Numpy 数组来实现图像翻转等操作原理讲解一张图片的本质是由 a(长) × b(宽) 与图像一样大小的矩阵的像素值组...

weixin_39928480的博客 3008

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

numpy旋转图片_Numpy 进阶(二) — 对图像进行旋转、水平、垂直镜像操作!

原理讲解用 Python 对图片做旋转、镜像操作时,小伙伴们可能首先想到的是 PIL 、Opencv 等图像处理程序包,只需要一行代码就可以实现目标转换。这样做的确能够实预期目标,但图像是怎么实现旋转的,这个过程对我们来说就像一个黑盒子,很陌生,为了了解图像变换机制,这篇文章借助 Numpy 数组来实现图像翻转等操作原理讲解一张图片的本质是由 a(长) × b(宽) 与图像一样大小的矩阵...

weixin_30219613的博客 2946

Python 旋转、翻转图片(附代码) | Python工具类

本文提供python旋转、翻转图片的方法,附上代码,直接使用!

阿良的博客 1万+

C#图片处理之:旋转图片90度的整数倍

旋转图片90的整数倍那真是太简单了。 publicstaticBitmapKiRotate90(Bitmapimg) ...{ try ...{ img.RotateFlip(RotateFlipType.Rotate90F...

aigubi2836的博客 91

android 读取的图片旋转90度_图片采集的方向问题

作者 |Seacen,目前在校生一枚,热衷于iOS开发,正在不断学习与探索当中。在平时喜欢运动、阅读、分享生活。刚开始使用AVFoundation进行采集的时候,经常会发现采集回来的图片方向不对。一般我们都是垂直(HOME键在底部)操作手机,但是在手机用相册或者在电脑上点开采集的图片时,都会发现图片逆时针旋转了90度。为了发现问题的所在,我们需要了解一下通常在图片采集中我们会遇到的各种...

weixin_30433439的博客 984

OpenCV 【六】————youtu(图像)——旋转保存图片

cv::Mat depth_image_(FLAGS_deptrum_output_height, FLAGS_deptrum_output_width, CV_16UC1, &depth_image[0]); std::string depth_filename = FLAGS_deptrum_prefix + "depth.png"; cv::imwrite(depth_filename.c_str(), depth_image_);...

格物致知 692
上一篇: 图片工具类(图片上传、压缩、旋转、剪切)
下一篇: 在pom.xml中添加Spring依赖
编程Thinker
博客等级 码龄12年 96粉丝 120原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值