/*** 缩放*/

public static void zoomByScale(BufferedImage bufImage, double scale) throwsIOException {//获取缩放后的长和宽

int _width = (int) (scale *bufImage.getWidth());int _height = (int) (scale *bufImage.getHeight());//获取缩放后的Image对象

Image _img =bufImage.getScaledInstance(_width, _height, Image.SCALE_DEFAULT);//新建一个和Image对象相同大小的画布

BufferedImage image = newBufferedImage(_width, _height, BufferedImage.TYPE_INT_RGB);//获取画笔

Graphics2D graphics =image.createGraphics();//将Image对象画在画布上,最后一个参数,ImageObserver:接收有关 Image 信息通知的异步更新接口,没用到直接传空

graphics.drawImage(_img, 0, 0, null);//释放资源

graphics.dispose();//使用ImageIO的方法进行输出,记得关闭资源

OutputStream out = new FileOutputStream("/Users/sunxianyan/Downloads/缩放.jpg");

ImageIO.write(image,"jpeg", out);

out.close();

}/*** 旋转*/

public static void rotate(BufferedImage bufImage, int degree) throwsIOException {int w = bufImage.getWidth();//得到图片宽度。

int h = bufImage.getHeight();//得到图片高度。

int swidth = 0; //旋转后的宽度

int sheight = 0;//旋转后的高度

int x;//原点横坐标

int y;//原点纵坐标

degree= degree %360;if (degree<0){

degree= 360+degree;

}double theta =Math.toRadians(degree);if (degree == 180|| degree ==0||degree==360){

sheight=bufImage.getWidth();

swidth=bufImage.getHeight();

}else if (degree == 90 || degree == 270) {

sheight=bufImage.getWidth();

swidth=bufImage.getHeight();

}else{

swidth= (int) (Math.sqrt(w * w + h *h));

sheight= (int) (Math.sqrt(w * w + h *h));

}

x= (swidth / 2) - (w / 2);//确定原点坐标

y = (sheight / 2) - (h / 2);

BufferedImage spinImage= newBufferedImage(swidth, sheight,bufImage.getType());//设置图片背景颜色

Graphics2D gs =(Graphics2D) spinImage.getGraphics();

gs.setColor(Color.white);

gs.fillRect(0, 0, swidth, sheight);//以给定颜色绘制旋转后图片的背景

AffineTransform at= newAffineTransform();

at.rotate(theta, swidth/ 2, sheight / 2);//旋转图象

at.translate(x, y);

AffineTransformOp op= newAffineTransformOp(at,

AffineTransformOp.TYPE_BICUBIC);

spinImage=op.filter(bufImage, spinImage);

ImageIO.write(spinImage,"jpeg", new File("/Users/sunxianyan/Downloads/旋转.jpg"));

}/*** 裁剪*/

public static void clip(BufferedImage bufImage) throwsIOException {

ImageIO.write(bufImage.getSubimage(0, 0, 100, 100), "JPEG", new File("/Users/sunxianyan/Downloads/裁剪.jpg"));

}/*** 镜像*/

public static void mirror(BufferedImage bufImage) throwsIOException {//获取图片的宽高

final int width =bufImage.getWidth();final int height =bufImage.getHeight();//读取出图片的所有像素

int[] rgbs = bufImage.getRGB(0, 0, width, height, null, 0, width);//对图片的像素矩阵进行水平镜像

for (int row = 0; row < height; row++) {for (int col = 0; col < width / 2; col++) {int temp = rgbs[row * width +col];

rgbs[row* width + col] = rgbs[row * width + (width - 1 -col)];

rgbs[row* width + (width - 1 - col)] =temp;

}

}//把水平镜像后的像素矩阵设置回 bufImage

bufImage.setRGB(0, 0, width, height, rgbs, 0, width);

ImageIO.write(bufImage,"JPEG", new File("/Users/sunxianyan/Downloads/镜像.jpg"));

}/*** 拼接*/

public static void add() throwsIOException {

String fileUrl= "https://static.cdn.longmaosoft.com/00039447dd4fa068e1835148c3d5431e.png";

String filepath= "/Users/sunxianyan/Downloads/223233fmbmgbxrmfwmi3mw.jpg";

BufferedImage bufImage= ImageIO.read(newURL(fileUrl));

BufferedImage addImage= ImageIO.read(newFile(filepath));

Graphics2D g2d=(Graphics2D) bufImage.getGraphics().create();//绘制图片(如果宽高传的不是图片原本的宽高, 则图片将会适当缩放绘制)

g2d.drawImage(addImage, 50, 50, addImage.getWidth(), addImage.getHeight(),null);

g2d.dispose();

ImageIO.write(bufImage,"jpeg", new File("/Users/sunxianyan/Downloads/拼接.jpg"));

}

java图片镜像代码_java图片基本操作-缩放,旋转,镜像,拼接相关推荐

  1. java实现上传图片代码_Java图片上传实现代码

    本文实例为大家分享了java图片上传代码,供大家参考,具体内容如下 import java.io.*; import java.net.*; /* *发送端 */ class picsend { pu ...

  2. java ajax上传图片插件_java图片上传并预览,前台用jQuery插件AjaxFileUpload,后台用FileUtils.copyFile....

    个人笔记,以备后用. 表体代码: 查看图片 js代码(记得要引入jquery库和ajaxfileupload库): //上传文件id号 function fileUpload(uploadFileId ...

  3. android图片显示代码,Android图片处理:识别图像方向并显示(示例代码)

    在Android中使用ImageView显示图片的时候发现图片显示不正.方向偏了或者倒过来了. 解决问题非常自然想到的分两步走:1.自己主动识别图像方向,计算旋转角度. 2.对图像进行旋转并显示. 一 ...

  4. java五子棋gui代码_java GUI实现五子棋游戏

    本文实例为大家分享了java实现五子棋游戏GUI,供大家参考,具体内容如下 引用包 //{Cynthia Zhang} import java.awt.*; import java.awt.event ...

  5. html图片消失代码,HTML图片代码

    HTML图片代码 2018-09-10 一.基础代码 二.加边框 1.普通黑色边框(浏览器默认黑色) 2.简单的CSS装饰框 ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ 三.加CSS滤镜 1.无参数滤镜 ①黑白 ...

  6. java 生产者消费者代码_Java生产者和消费者代码

    java 生产者消费者代码 This also helps us to understand the concept of synchronised multi-threading in java, ...

  7. 10款js图片代码_图片滚动代码_图片切换代码_图片特效代码_图片轮播代码(三)

    jquery banner滑块导航条幻灯片轮播图片滚动 jQuery blockSlide插件熔岩灯标签导航banner焦点图片切换 jquery图片冒泡插件鼠标悬停图片冒泡动画展示 jquery h ...

  8. 10款js图片代码_图片滚动代码_图片切换代码_图片特效代码_图片轮播代码(一)

    实现图片墙时光穿梭特效 swiper图文卡片滑块切换特效 网页放大镜图片预览插件 图片瀑布流tab分类切换特效 js窗帘式图片切换特效 全屏带视频banner轮播图片特效 Swiper仿魅族官网大图轮 ...

  9. qgraphicsview鼠标移动图片_交互式QGraphicsView(平移/缩放/旋转)-阿里云开发者社区...

    简述 Graphics View提供了一个平台用于大量自定义 2D 图元的管理与交互框架包括一个事件传播架构支持场景 Scene 中的图元 Item 进行精确的双精度交互功能.Item 可以处理键盘事 ...

最新文章

  1. win10清理_大家都说Win10系统不用装360,那么如何清理电脑软件垃圾呢?
  2. 阿里Java岗P5-P7成长笔记【3283页PDF文档】
  3. java 监控 收集资料2(收集中)
  4. Life Cycle Stages of ASP.NET Web Page.
  5. jmeter(二)录制脚本
  6. iOS设备中的推送(三):页面跳转
  7. 买二手房满二满五怎么理解?什么意思?
  8. [LeetCode]小工具,统计数量,隐藏上锁的题目
  9. 打开与关闭Linux防火墙
  10. 编程规范基础学习笔记
  11. 舒尔特注意力训练表格_为什么那些常见的专注力训练方式,给娃用了好像效果不大?...
  12. 智能灯丝灯方案为复古设计注入“ 科技基因 ”
  13. Android Studio 3.0 正式版本 发行说明 (翻译)
  14. linux基础命令与文件系统(ip a、ls、cat、vim、cd、pwd、hostname、date、reboot、poweroff、echo、touch、rm、mkdir、diff、file)
  15. 通信达股票交易接口使用步骤
  16. 3-15岁孩子英文学习网站
  17. 喂,你要多吃点含乳酸菌的食品
  18. Java SE 学习记录——进阶版11
  19. 深入浅出CChart 每日一课——快乐高四第二十四课 武当梯云纵,移花接木之Visual Basic.Net
  20. 计算机pc的桌面操作系统,电脑桌面操作系统介绍

热门文章

  1. 微信小程序日志打印失败
  2. Linux查看tomcat服务进程号,linux如何查看tomcat进程_网站服务器运行维护
  3. 韩文数据库存取乱码解决方案
  4. 实操解决Virtualbox中centos虚拟机硬盘扩容的问题
  5. python基础-变量及变量类型转换
  6. AFDet: Anchor Free One Stage 3D Object Detection
  7. 电子科技大学计算机学术研究生,征稿 | 第四届电子科技大学研究生学术年会征稿启事...
  8. MRD文档撰写方法与技巧
  9. Eclipse插件的使用和开发
  10. 精选10个用于Java开发Spring Boot的Eclipse插件