java实现高清图片剪切
前提:要想实现图片的高清剪切,需要保证原始图片是高清图片,且本程序运行剪切后可大幅度缩小图片的大小
一、主程序main()方法:
import javax.imageio.ImageIO;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.io.File;public static void main(String[] args) throws Exception {try {/*** 指定剪切后图片的宽高*/cutImage1("D:\\Mercedes-Benz.jpg", "D:\\Mercedes-Benz1.jpg", 500, 400);/*** 指定放大/缩小的比例*/cutImage2("D:\\Mercedes-Benz.jpg", "D:\\Mercedes-Benz2.jpg", 0.9);} catch (Exception e) {e.printStackTrace();}
}
二、按照指定宽高剪切:
/*** 按照指定宽高剪切图片** @param fromFilePath 原始图片完整路径* @param saveToFilePath 缩略图片保存路径* @param width 剪切后图片的宽* @param height 剪切后图片的高* @throws Exception*/
private static void cutImage1(String fromFilePath, String saveToFilePath, int width, int height) throws Exception {// 校验原始图片File file = new File(fromFilePath);if (!file.isFile()) {throw new Exception(file + " is not image file error in cutImage!");}BufferedImage buffer = ImageIO.read(file);/** 核心算法,计算图片的压缩比** w 和 h 为原始图片的宽和高** width 和 height 为压缩/放大后图片的宽和高*/int w = buffer.getWidth();int h = buffer.getHeight();double ratiox = 1.0;double ratioy = 1.0;ratiox = w * ratiox / width;ratioy = h * ratioy / height;// 缩小图片if (ratiox >= 1) {if (ratioy < 1) {ratiox = height * 1.0 / h;} else {if (ratiox > ratioy) {ratiox = height * 1.0 / h;} else {ratiox = width * 1.0 / w;}}} else {// 放大图片if (ratioy < 1) {if (ratiox > ratioy) {ratiox = height * 1.0 / h;} else {ratiox = width * 1.0 / w;}} else {ratiox = width * 1.0 / w;}}/** 对于图片的放大或缩小倍数计算完成,ratiox大于1,则表示放大,否则表示缩小*/AffineTransformOp op = new AffineTransformOp(AffineTransform.getScaleInstance(ratiox, ratiox), null);buffer = op.filter(buffer, null);// 从放大的图像中心截图buffer = buffer.getSubimage((buffer.getWidth() - width) / 2, (buffer.getHeight() - height) / 2, width, height);try {ImageIO.write(buffer, "jpg", new File(saveToFilePath));} catch (Exception ex) {throw new Exception(" ImageIo.write error in CreatThum.: " + ex.getMessage());}
}
三、按照指定放大/缩小因子来剪切:
/*** 等比例放大/缩小图片** @param fromFilePath 原始图片完整路径* @param saveToFilePath 缩略图片保存路径* @param scale 缩放比例* @throws Exception*/
private static void cutImage2(String fromFilePath, String saveToFilePath, double scale) throws Exception {// 校验原始图片File file = new File(fromFilePath);if (!file.isFile()) {throw new Exception(file + " is not image file error in cutImage!");}BufferedImage buffer = ImageIO.read(file);/** width和height为压缩后图片的宽和高*/int width = (int) (buffer.getWidth() * scale);int height = (int) (buffer.getHeight() * scale);AffineTransformOp op = new AffineTransformOp(AffineTransform.getScaleInstance(scale, scale), null);buffer = op.filter(buffer, null);buffer = buffer.getSubimage(0, 0, width, height);try {ImageIO.write(buffer, "jpg", new File(saveToFilePath));} catch (Exception ex) {throw new Exception(" ImageIo.write error in CreatThum.: " + ex.getMessage());}
}
四、图片展示:
原始图片-Mercedes-Benz.jpg:
指定大小后-Mercedes-Benz1.jpg:
指定放大/缩小因子-Mercedes-Benz2.jpg:
图片总览:
图片属性:
1,原始图片:
2,指定宽高:
3,指定放大/缩小因子:
参考url:https://www.cnblogs.com/qianzf/p/10608191.html
java实现高清图片剪切相关推荐
- java 图片处理 图片缩略图,java怎么生成图片缩略图,缩小图片,高清图片缩小
java如何生成图片缩略图,缩小图片,高清图片缩小 可以把图片缩小到理想的倍数,也可以根据自己的需要来具体规定图片转化后的大小 对于类型为jpg的图片来说,只需要三个参数就能转化得到自己想要的图片 参 ...
- java实现高清不失真图片压缩
java实现高清不失真图片压缩 1.从图像文件创建缩略图 Thumbnails.of(new File("original.jpg")).size(160, 160).toFile ...
- 获取王者荣耀皮肤所有高清图片-Python
参考:https://blog.csdn.net/yaoyefengchen/article/details/78813477 获取王者荣耀所有高清图片,通过Phtyon很简单能实现. 我最喜欢的李白 ...
- ffmpeg如何进行高清图片转码,截取视频
默认命令 ffmpeg -i [video] -f image2 output_%d.jpg 但是转码出来的图片像素不高 可以使用qscale命令,说明如下: Use -qscale:v Use -q ...
- ECCV 2020 Oral | 可逆图像缩放:完美恢复降采样后的高清图片
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文介绍的是ECCV 2020 Oral论文<Inverti ...
- cocos2d-x 2.0启用HD高清图片支持
cocos2dx 2.0后不再支持-hd这种方式来启用高清图片,而是变为需要在CCFileUtils中指定图片的目录来启用,本例中文件结构如图所示,Misc目录位于Resources下,注意文件夹是蓝 ...
- MATLAB如何保存仿真高清图片(matlab)
MATLAB如何保存仿真高清图片!(matlab) 1.先打开你的fig文件: 2.在命令窗口输入: print -f1 -djpeg -r600 mypic 并回车,图片就保存到与fig文件的同文件 ...
- python爬取王者皮肤_Python爬取王者荣耀英雄皮肤高清图片
前言 临下班前,看到群里有人在讨论用王者农药的一些皮肤作为电脑的壁纸,什么高清的,什么像素稍低的,网上查了一手,也有,但像素都不一样,所以,我就想着,自己去官网直接爬他的高清皮肤就好了,然后就有了这边 ...
- 唔姆(二次元高清图片收藏)
简介 唔姆app是一款安卓上的二次元壁纸软件,在这里有着海量的二次元精品图片可供用户们进行收藏,并且,用户们还可以在唔姆app来寻找图片的出处或是高清的图片等等,除此之外,唔姆app中还有着许许多的漫 ...
- 源代码src修改为本地图片_20 行 Python 代码批量抓取免费高清图片!
前言 相信在你的工作中可能会经常用到PPT吧,你在PPT制作过程中有没有这样的困惑,就是可以到哪里找到既高清又无版权争议的图片素材呢?这里强烈推荐ColorHub,这是一个允许个人和商业用途的免费图片 ...
最新文章
- 天兔(Lepus)监控系统慢查询分析平台安装配置
- 来个邪恶假说,假如有人把支付宝所有存储服务器炸了,我们在里边的钱是不是都丢了?
- php 查询and or,php – SQL查询多个AND和OR不起作用
- 在移动端a、input、label等标签点击后会出现背景阴影问题
- java sql 联表查询系统_Spring Hibernate JPA 联表查询 复杂查询(转)
- 密钥--公钥、私钥方式
- Windows 7 ship party
- IT人士|不可不知的10个行业内幕
- C#调用java类、jar包方法
- Android的深度定制版阿里云os(Android的山寨)
- 《最受欢迎的男友职业排行榜Top10》
- 实验室信息化建设助力医药研发
- 节奏旋律音乐制作软件-Native Instruments Maschine 2 v2.14.1 WiN
- filp_open/filp_close/vfs_read/vfs_write
- Go语言中开启和退出协程
- 北京各大医院专长(转)
- Oracle11g在虚拟机win7上的详细安装过程(包括win7在虚拟机上的安装)
- excel根据条件列转行_excel怎么批量把行变成列
- 用fingerprintjs2.js 生成浏览器标识
- [转载] 我叫李小帅
热门文章
- 关于爬虫学习的一些小小记录(二)——正则表达式匹配
- 天眼查企业工商信息查询接口
- codeforces920 C. Swap Adjacent Elements【连通块 + 前缀和】
- 实验设计的道德伦理考量
- 看ftp服务器文件日期,ftp查看服务器当前日期
- 易语言精易web浏览器填表
- Visio导出矢量图转eps格式
- Sublime Text自定制代码片段之 快速生成html结构
- 【论文总结】DeepEMD:Few-Shot Image Classification with Differentiable Earth Mover’s Distance(附翻译)
- 永磁直流无刷电机设计之路(三)——电磁参数设计