前提:要想实现图片的高清剪切,需要保证原始图片是高清图片,且本程序运行剪切后可大幅度缩小图片的大小

一、主程序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实现高清图片剪切相关推荐

  1. java 图片处理 图片缩略图,java怎么生成图片缩略图,缩小图片,高清图片缩小

    java如何生成图片缩略图,缩小图片,高清图片缩小 可以把图片缩小到理想的倍数,也可以根据自己的需要来具体规定图片转化后的大小 对于类型为jpg的图片来说,只需要三个参数就能转化得到自己想要的图片 参 ...

  2. java实现高清不失真图片压缩

    java实现高清不失真图片压缩 1.从图像文件创建缩略图 Thumbnails.of(new File("original.jpg")).size(160, 160).toFile ...

  3. 获取王者荣耀皮肤所有高清图片-Python

    参考:https://blog.csdn.net/yaoyefengchen/article/details/78813477 获取王者荣耀所有高清图片,通过Phtyon很简单能实现. 我最喜欢的李白 ...

  4. ffmpeg如何进行高清图片转码,截取视频

    默认命令 ffmpeg -i [video] -f image2 output_%d.jpg 但是转码出来的图片像素不高 可以使用qscale命令,说明如下: Use -qscale:v Use -q ...

  5. ECCV 2020 Oral | 可逆图像缩放:完美恢复降采样后的高清图片

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文介绍的是ECCV 2020 Oral论文<Inverti ...

  6. cocos2d-x 2.0启用HD高清图片支持

    cocos2dx 2.0后不再支持-hd这种方式来启用高清图片,而是变为需要在CCFileUtils中指定图片的目录来启用,本例中文件结构如图所示,Misc目录位于Resources下,注意文件夹是蓝 ...

  7. MATLAB如何保存仿真高清图片(matlab)

    MATLAB如何保存仿真高清图片!(matlab) 1.先打开你的fig文件: 2.在命令窗口输入: print -f1 -djpeg -r600 mypic 并回车,图片就保存到与fig文件的同文件 ...

  8. python爬取王者皮肤_Python爬取王者荣耀英雄皮肤高清图片

    前言 临下班前,看到群里有人在讨论用王者农药的一些皮肤作为电脑的壁纸,什么高清的,什么像素稍低的,网上查了一手,也有,但像素都不一样,所以,我就想着,自己去官网直接爬他的高清皮肤就好了,然后就有了这边 ...

  9. 唔姆(二次元高清图片收藏)

    简介 唔姆app是一款安卓上的二次元壁纸软件,在这里有着海量的二次元精品图片可供用户们进行收藏,并且,用户们还可以在唔姆app来寻找图片的出处或是高清的图片等等,除此之外,唔姆app中还有着许许多的漫 ...

  10. 源代码src修改为本地图片_20 行 Python 代码批量抓取免费高清图片!

    前言 相信在你的工作中可能会经常用到PPT吧,你在PPT制作过程中有没有这样的困惑,就是可以到哪里找到既高清又无版权争议的图片素材呢?这里强烈推荐ColorHub,这是一个允许个人和商业用途的免费图片 ...

最新文章

  1. 天兔(Lepus)监控系统慢查询分析平台安装配置
  2. 来个邪恶假说,假如有人把支付宝所有存储服务器炸了,我们在里边的钱是不是都丢了?
  3. php 查询and or,php – SQL查询多个AND和OR不起作用
  4. 在移动端a、input、label等标签点击后会出现背景阴影问题
  5. java sql 联表查询系统_Spring Hibernate JPA 联表查询 复杂查询(转)
  6. 密钥--公钥、私钥方式
  7. Windows 7 ship party
  8. IT人士|不可不知的10个行业内幕
  9. C#调用java类、jar包方法
  10. Android的深度定制版阿里云os(Android的山寨)
  11. 《最受欢迎的男友职业排行榜Top10》
  12. 实验室信息化建设助力医药研发
  13. 节奏旋律音乐制作软件-Native Instruments Maschine 2 v2.14.1 WiN
  14. filp_open/filp_close/vfs_read/vfs_write
  15. Go语言中开启和退出协程
  16. 北京各大医院专长(转)
  17. Oracle11g在虚拟机win7上的详细安装过程(包括win7在虚拟机上的安装)
  18. excel根据条件列转行_excel怎么批量把行变成列
  19. 用fingerprintjs2.js 生成浏览器标识
  20. [转载] 我叫李小帅

热门文章

  1. 关于爬虫学习的一些小小记录(二)——正则表达式匹配
  2. 天眼查企业工商信息查询接口
  3. codeforces920 C. Swap Adjacent Elements【连通块 + 前缀和】
  4. 实验设计的道德伦理考量
  5. 看ftp服务器文件日期,ftp查看服务器当前日期
  6. 易语言精易web浏览器填表
  7. Visio导出矢量图转eps格式
  8. Sublime Text自定制代码片段之 快速生成html结构
  9. 【论文总结】DeepEMD:Few-Shot Image Classification with Differentiable Earth Mover’s Distance(附翻译)
  10. 永磁直流无刷电机设计之路(三)——电磁参数设计