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数据相关推荐

  1. android exifinterface 图片大小,Android图像resize和保存EXIF数据(方向,旋转等)

    Android图像resize和保存EXIF数据(方向,旋转等) 如果您的Android应用程序使用设备相机拍摄照片然后resize(这对减小上传大小非常常见),但是您可能没有意识到此大小调整操作会剥 ...

  2. java 修改 referer_看好你的门-客户端传数据-用java修改referer

    1.简单说明 Referer.origin用来表明,浏览器向WEB服务器表明自己来自哪里. 但是就它本身而言,并非完全安全. 写一个例子,可以任意修改http信息头中的referer.origin 2 ...

  3. Java 使用 POI 操作 Excel(反射,大数据量)

    Apache POI 基本介绍 Apache POI 是 Apache 软件基金会提供的 100% 开源库.支持 Excel 库的所有基本功能. 图片来源:易百教程 基本概念 在 POI 中,Work ...

  4. java 修改pdf_Java 操作PDF书签详解 - 添加、修改、读取和删除

    目录前言 Free Spire.PDF for Java库概述和安装 给PDF文档添加书签 修改现有书签 设置PDF文档打开时展开或折叠书签 读取书签标题 从PDF文档中删除书签 前言 书签在一些PD ...

  5. redis api java 正则_java代码怎么正则删除redis的数据

    在加载Jedis JAR包之后,可以直接使用新建一个Jedis实例的方法,来建立一个到Redis的连接,并进行操作.不过跟Mysql一样,每次操作的时候,都建立连接,很耗费性能.解决方法就是从一个连接 ...

  6. java stringbuffer 转数组_JAVA之旅(十七)——StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder...

    JAVA之旅(十七)--StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder 讲完String,我们来聊聊他的小兄弟 一.StringB ...

  7. 大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作

    大数据技术之_20_Elasticsearch学习_01 一 概述 1.1 什么是搜索? 1.2 如果用数据库做搜索会怎么样? 1.3 什么是全文检索和 Lucene? 1.4 什么是 Elastic ...

  8. 大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作...

    一 概述1.1 什么是搜索?1.2 如果用数据库做搜索会怎么样?1.3 什么是全文检索和 Lucene?1.4 什么是 Elasticsearch?1.5 Elasticsearch 的适用场景1.6 ...

  9. java删除一级域名下cookie_java操作cookie示例(删除cookie)

    1.设置Cookie 代码如下: Cookie cookie = new Cookie("key", "value"); cookie.setMaxAge(60 ...

  10. java使用poi操作excel删除一整行

    java使用poi操作excel删除一整行 需求1:删除excel表格第4行 代码示例: sheet.shiftRows(4, sheet.getLastRowNum(),-1); 第一个参数为行数( ...

最新文章

  1. 猫猫学iOS 之第一次打开Xcode_git配置,git简单学习
  2. JAVA实现矩形覆盖问题(《剑指offer》)
  3. Centos MySql基础
  4. android域账号认证失败,绕过域账户认证失败锁定次数限制的技巧
  5. linux共享 smb3.0,区块链3.0_精通Hyperledger之Samba使用(4)
  6. IIS7中使用集成模式时出现HttpException
  7. (十)IDEA添加mybatis-mapp.xml文件
  8. 编程体系结构(02):Java异常体系
  9. java 新特性之 stream 流
  10. 30余种加密编码类型的密文特征分析
  11. AI芯片浮出新玩家OURS,来者何人?新晋图灵奖得主华人弟子谭章熹
  12. 区块链100讲:详解Po.et 技术栈
  13. 什么是我想要守护的东西?
  14. 【Sprint3冲刺之前】TD学生助手——alpha版发布
  15. natapp 使用教程
  16. 摩托罗拉mpkg安装签名方法研究
  17. 高光反差情况下出现紫边的成因分析
  18. 第十二章:email-mailbox:管理email归档-imaplib:IMAP4客户库-连接服务器(认证失败)
  19. 小米电视怎么看cctv?安装小鲸电视免广告教程值得看
  20. java8的函数式接口的好处_浅谈Java 8 新增函数式接口到底是什么

热门文章

  1. 动态规划挖金矿问题——python实现
  2. 格兰杰检验的基本步骤_实证检验步骤
  3. 腾讯三面:Cookie的SameSite了解吧,那SameParty呢?
  4. 同源、跨域、跨站、SameSite与withCredentials
  5. 回归的误差服从正态分布吗_计量经济学中为什么误差项u服从正态分布,则系数也服从正态分布...
  6. ftp文件服务器编码,ftp服务器字符编码
  7. Sizes of tensors must match except in dimension 1. Got 85 and 6 in dimension 2
  8. # Maven错误Error executing Maven
  9. DZ X页头主菜单背景图片透明自由更换页头背景图片的方法
  10. Python爬虫:Scrapy-redis分布式爬虫讲解