java 修改exif_java – 操作图像而不删除其EXIF数据
ImageIO本身就具有此功能,但您需要使用ImageReader而不是ImageIO.read:
ImageReader reader = ImageIO.getImageReadersBySuffix("jpg").next();
(您可能还想检查这样的阅读器是否存在).
然后你需要设置输入:
reader.setInput(ImageIO.createImageInputStream(your_imput_stream));
现在您可以保存元数据:
IIOMetadata metadata = reader.getImageMetadata(0);
// As far as I understand you should provide
// index as tiff images could have multiple pages
然后阅读图片:
BufferedImage bi = reader.read(0);
如果要保存新图像,则应使用ImageWriter:
// I'm writing to byte array in memory, but you may use any other stream
ByteArrayOutputStream os = new ByteArrayOutputStream(255);
ImageOutputStream ios = ImageIO.createImageOutputStream(os);
Iterator iter = ImageIO.getImageWritersByFormatName("jpeg");
ImageWriter writer = iter.next();
writer.setOutput(ios);
//You may want also to alter jpeg quality
ImageWriteParam iwParam = writer.getDefaultWriteParam();
iwParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
iwParam.setCompressionQuality(.95f);
//Note: we're using metadata we've already saved.
writer.write(null, new IIOImage(bi, null, metadata), iwParam);
writer.dispose();
ImageIO.write(bi, "jpg", ios);
由于这是一个古老的主题,我想这个答案有点太晚了,但可能会帮助其他人,因为这个话题仍然可以转让.
java 修改exif_java – 操作图像而不删除其EXIF数据相关推荐
- android exifinterface 图片大小,Android图像resize和保存EXIF数据(方向,旋转等)
Android图像resize和保存EXIF数据(方向,旋转等) 如果您的Android应用程序使用设备相机拍摄照片然后resize(这对减小上传大小非常常见),但是您可能没有意识到此大小调整操作会剥 ...
- java 修改 referer_看好你的门-客户端传数据-用java修改referer
1.简单说明 Referer.origin用来表明,浏览器向WEB服务器表明自己来自哪里. 但是就它本身而言,并非完全安全. 写一个例子,可以任意修改http信息头中的referer.origin 2 ...
- Java 使用 POI 操作 Excel(反射,大数据量)
Apache POI 基本介绍 Apache POI 是 Apache 软件基金会提供的 100% 开源库.支持 Excel 库的所有基本功能. 图片来源:易百教程 基本概念 在 POI 中,Work ...
- java 修改pdf_Java 操作PDF书签详解 - 添加、修改、读取和删除
目录前言 Free Spire.PDF for Java库概述和安装 给PDF文档添加书签 修改现有书签 设置PDF文档打开时展开或折叠书签 读取书签标题 从PDF文档中删除书签 前言 书签在一些PD ...
- redis api java 正则_java代码怎么正则删除redis的数据
在加载Jedis JAR包之后,可以直接使用新建一个Jedis实例的方法,来建立一个到Redis的连接,并进行操作.不过跟Mysql一样,每次操作的时候,都建立连接,很耗费性能.解决方法就是从一个连接 ...
- java stringbuffer 转数组_JAVA之旅(十七)——StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder...
JAVA之旅(十七)--StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder 讲完String,我们来聊聊他的小兄弟 一.StringB ...
- 大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作
大数据技术之_20_Elasticsearch学习_01 一 概述 1.1 什么是搜索? 1.2 如果用数据库做搜索会怎么样? 1.3 什么是全文检索和 Lucene? 1.4 什么是 Elastic ...
- 大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作...
一 概述1.1 什么是搜索?1.2 如果用数据库做搜索会怎么样?1.3 什么是全文检索和 Lucene?1.4 什么是 Elasticsearch?1.5 Elasticsearch 的适用场景1.6 ...
- java删除一级域名下cookie_java操作cookie示例(删除cookie)
1.设置Cookie 代码如下: Cookie cookie = new Cookie("key", "value"); cookie.setMaxAge(60 ...
- java使用poi操作excel删除一整行
java使用poi操作excel删除一整行 需求1:删除excel表格第4行 代码示例: sheet.shiftRows(4, sheet.getLastRowNum(),-1); 第一个参数为行数( ...
最新文章
- 猫猫学iOS 之第一次打开Xcode_git配置,git简单学习
- JAVA实现矩形覆盖问题(《剑指offer》)
- Centos MySql基础
- android域账号认证失败,绕过域账户认证失败锁定次数限制的技巧
- linux共享 smb3.0,区块链3.0_精通Hyperledger之Samba使用(4)
- IIS7中使用集成模式时出现HttpException
- (十)IDEA添加mybatis-mapp.xml文件
- 编程体系结构(02):Java异常体系
- java 新特性之 stream 流
- 30余种加密编码类型的密文特征分析
- AI芯片浮出新玩家OURS,来者何人?新晋图灵奖得主华人弟子谭章熹
- 区块链100讲:详解Po.et 技术栈
- 什么是我想要守护的东西?
- 【Sprint3冲刺之前】TD学生助手——alpha版发布
- natapp 使用教程
- 摩托罗拉mpkg安装签名方法研究
- 高光反差情况下出现紫边的成因分析
- 第十二章:email-mailbox:管理email归档-imaplib:IMAP4客户库-连接服务器(认证失败)
- 小米电视怎么看cctv?安装小鲸电视免广告教程值得看
- java8的函数式接口的好处_浅谈Java 8 新增函数式接口到底是什么
热门文章
- 动态规划挖金矿问题——python实现
- 格兰杰检验的基本步骤_实证检验步骤
- 腾讯三面:Cookie的SameSite了解吧,那SameParty呢?
- 同源、跨域、跨站、SameSite与withCredentials
- 回归的误差服从正态分布吗_计量经济学中为什么误差项u服从正态分布,则系数也服从正态分布...
- ftp文件服务器编码,ftp服务器字符编码
- Sizes of tensors must match except in dimension 1. Got 85 and 6 in dimension 2
- # Maven错误Error executing Maven
- DZ X页头主菜单背景图片透明自由更换页头背景图片的方法
- Python爬虫:Scrapy-redis分布式爬虫讲解