java快速获取大图片的分辨率(大图片格式JPG,tiff ,eg)
问题描述:怎样快速获取一个20MB图片的分辨率?
程序代码:
1 package test; 2 3 import java.awt.Dimension; 4 import java.awt.image.BufferedImage; 5 import java.io.File; 6 import java.io.IOException; 7 import java.util.Iterator; 8 import javax.imageio.ImageIO; 9 import javax.imageio.ImageReader; 10 import javax.imageio.stream.FileImageInputStream; 11 import javax.imageio.stream.ImageInputStream; 12 13 /** 14 * 读取大图片的分辨率 15 * 16 * @author 远方bruce 17 * 18 */ 19 public class ReadResolution { 20 /** 21 * 通过BufferedImage获取 22 * @param file 文件 23 * @return 图片的分辨率 24 * @throws IOException 25 */ 26 public static String getResolution1(File file) throws IOException { 27 BufferedImage image = ImageIO.read(file); 28 return image.getWidth() + "x" + image.getHeight(); 29 } 30 31 /** 32 * 获取图片的分辨率 33 * 34 * @param path 35 * @return 36 */ 37 public static Dimension getImageDim(String path) { 38 Dimension result = null; 39 String suffix = getFileSuffix(path); 40 //解码具有给定后缀的文件 41 Iterator<ImageReader> iter = ImageIO.getImageReadersBySuffix(suffix); 42 System.out.println(ImageIO.getImageReadersBySuffix(suffix)); 43 if (iter.hasNext()) { 44 ImageReader reader = iter.next(); 45 try { 46 ImageInputStream stream = new FileImageInputStream(new File( 47 path)); 48 reader.setInput(stream); 49 int width = reader.getWidth(reader.getMinIndex()); 50 int height = reader.getHeight(reader.getMinIndex()); 51 result = new Dimension(width, height); 52 } catch (IOException e) { 53 e.printStackTrace(); 54 } finally { 55 reader.dispose(); 56 } 57 } 58 System.out.println("getImageDim:" + result); 59 return result; 60 } 61 62 /** 63 * 获得图片的后缀名 64 * @param path 65 * @return 66 */ 67 private static String getFileSuffix(final String path) { 68 String result = null; 69 if (path != null) { 70 result = ""; 71 if (path.lastIndexOf('.') != -1) { 72 result = path.substring(path.lastIndexOf('.')); 73 if (result.startsWith(".")) { 74 result = result.substring(1); 75 } 76 } 77 } 78 System.out.println("getFileSuffix:" + result); 79 return result; 80 } 81 82 /** 83 * 截取Dimension对象获得分辨率 84 * @param path 85 * 86 * @return 87 */ 88 public static String getResolution2(String path) { 89 String s = getImageDim(path).toString(); 90 s = s.substring(s.indexOf("[") + 1, s.indexOf("]")); 91 String w = s.substring(s.indexOf("=") + 1, s.indexOf(",")); 92 String h = s.substring(s.lastIndexOf("=") + 1); 93 String result = w + " x " + h; 94 System.out.println("getResolution:" + result); 95 return result; 96 } 97 98 /** 99 * 测试 100 * 101 * @param args 102 * @throws IOException 103 */ 104 public static void main(String[] args) throws IOException { 105 String path = "d:\\abc.JPG"; 106 File file = new File(path); 107 System.out.println("第1种方法使用的时间:"); 108 long s1 = System.currentTimeMillis(); 109 System.out.println(getResolution1(file)); 110 long l1 = System.currentTimeMillis(); 111 System.out.println((l1 - s1)+"ms"); 112 System.out.println("******************************"); 113 System.out.println("第2种方法使用的时间:"); 114 long s2 = System.currentTimeMillis(); 115 getResolution2(path); 116 long l2 = System.currentTimeMillis(); 117 System.out.println((l2 - s2)+"ms"); 118 } 119 }
运行结果:
第1种方法使用的时间:
11935x8554
4867ms
******************************
第2种方法使用的时间:
getFileSuffix:JPG
javax.imageio.ImageIO$ImageReaderIterator@11ddcde
getImageDim:java.awt.Dimension[width=11935,height=8554]
getResolution:11935 x 8554
0ms
注意:由于第一种方法是将图片一次性读入内存所以需要设置JVM的运行内存,具体方法是run图标下拉-》Run Configurations-》VM arguments填入
-Xms256m -Xmx1024m
解释:Dimension类封装单个对象中组件的宽度和高度(精确到整数)。ImageIO类包含一些用来查找 ImageReader
和 ImageWriter
以及执行简单编码和解码的静态便捷方法。ImageReader用来解析和解码图像的抽象超类。
转载于:https://www.cnblogs.com/bruceliang/p/3383431.html
java快速获取大图片的分辨率(大图片格式JPG,tiff ,eg)相关推荐
- JAVA快速获取网络图片或者URL图片并保存到本地
JAVA快速获取网络图片或者URL图片并保存到本地,直接上代码: import java.io.ByteArrayOutputStream; import java.io.File; import j ...
- 快速获取一个网站的所有资源,图片,html,css,js......扒站,仿站必备工具
今天介绍一款软件,可以快速获取一个网站的所有资源,图片,html,css,js...... 以获取某车官网为例 我来展示一下这个软件的功能. 输入网站地址和网站要保存的文件夹 如果网站名称后我们可以扫 ...
- (十)老照片修复、图像超分、图片提高分辨率、图片高清化、图片清晰化、黑白图片上色、人脸祛斑、美颜、人体瘦身、图像去噪、人像抠图、批量处理、视频提高分辨率、视频逐帧修复
(十)老照片修复.图像超分.图片提高分辨率.图片高清化.图片清晰化.黑白图片上色.人脸祛斑.美颜.人体瘦身.图像去噪.人像抠图.批量处理.视频提高分辨率.视频逐帧修复 本文的代码的功能是:可以对图片文 ...
- ps 修改图片大小(分辨率)(png图片)
很简单,通常是将分辨率大的改成分辨率小的 之前用美图秀秀在修改图片,将分辨率大的改小后 发现小图会有阴影,于是没办法就下了ps,还是ps好用些. 步骤 1.用ps打开需要修改的图片 2.选择图像,修改 ...
- 怎么改图片的分辨率?图片分辨率怎么调高?
我们从网上下载下来的图片,很多都不是很清晰,这是因为图片分辨率不够高造成的,所以如何通过改图片分辨率来提高画质呢?其实图片修改分辨率(https://www.yasuotu.com/dpi)的方法有很 ...
- Java爬虫获取网页视频,音乐,图片等
如何使用Java写爬虫来获取网页视频 方法1对于没有反爬虫机制(不多说直接上代码) @SuppressWarnings("all") public String getVideo( ...
- Java:获取系统时间,并自定义时间格式
前言 系统时间获取经常被用来存储和排错,其格式完全可以按照自己喜好改变 1.先贴代码再讲解 import java.text.SimpleDateFormat; import java.util.Ca ...
- java提取word中的图片_Java怎么获取Word批注的文字和图片
Java怎么获取Word批注的文字和图片 发布时间:2020-06-23 11:07:08 来源:亿速云 阅读:119 作者:Leah 这篇文章将为大家详细讲解有关Java获取Word批注的文字和图片 ...
- cdr文件过大导出pdf打不开_PDF快速导出JPG对应的分辨率技巧
前言 很多人想将PDF文件转换成JPG文件,却不知道怎么转或者只知道直接另存为jpg文件,也不清楚对应的分辨率点.那我们怎么让PDF文件转换成JPG文件相对应的分辨率? 今天小编给大家分享PDF快速导 ...
最新文章
- Python 的一万种用法:制作 Web 可视化页面
- 我的世界最新版本生存服务器ip,我的世界服务器古风小阁IP|纯净生存(1.15.2)
- 四级嵌入式系统开发工程师-计算题题库
- 3.1亿美元融资之后,重估文远知行
- Zuul:构建高可用网关之多维度限流
- 平衡二叉树(AVL)实现(3)-删除
- asp.net mysql 事务_ASP.NET Core 1.0 使用 Dapper 操作 MySql(包含事务)
- 从普通JAVA程序员到阿里P8架构师,他用了六年
- python关键字与标识符
- html和css动画效果,css过渡和css动画的区别是什么?
- js html转为实体,字符串js编码转换成实体html编码的方法(防范XSS攻击)
- css之左边div固定宽度右边div自适应布局
- Gridview 增加多个空行。
- smtp、esmtp、pop3命令使用
- 微信网页版(在电脑上聊微信)
- 为什么说优秀的管理都是自下而上的?
- 无线网络-何为ISM频段?
- 由 hacked by 1byte 想到的,再说两句
- linux 访问windows本地项目异常如何解决,求助
- java中不可变对象(immutable object)是什么,有什么意义
热门文章
- mysql命令速查手册
- 八、操作系统——基本分页存储管理的基本概念(详解)
- LeetCode 464. 我能赢吗(状态压缩+记忆化递归 / 博弈)
- LeetCode 765. 情侣牵手(贪心)
- LeetCode 287. 寻找重复数(BitMap)
- LeetCode 47. 全排列 II(回溯+搜索剪枝)
- 服务端_说说Netty服务端启动流程
- python 画三角函数_python,将三角函数绘制成二维数组
- 文本预处理跑得慢?抱抱脸团队又放福利,1GB文本语料分词只需20s!
- 如果有一天,小夕不再萌...