基于java的图片文件格式转换和线性缩放

BurpSuite实战:5分钟搞定Pikachu靶场表单爆破(附最新字典配置技巧) 本文通过Pikachu靶场实战,详细演示了如何使用BurpSuite的Intruder模块对Web登录表单进行暴力破解。从代理配置、请求捕获、集束炸弹模式设置,到载荷配置与结果分析,提供了完整的操作流程。文中还分享了2024年有效的字典获取与优化技巧,帮助安全测试人员快速定位弱口令漏洞。 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 图片文件格式转换最核心的问题就是要解决各种图片格式的编码和解码,推荐用jimi包,可从http://java.sun.com/products/jimi/下载该包及其源码和demo。   需要注意的是:jimi提供了对几乎所有图片格式的解码支持,但是为提供gif和tif/tiff格式的编码api,gif编码问题在网上可以找到县相关的源码,tiff好像jai:http://java.sun.com/products/java-media/jai/index.jsp提供了它的编码,不过我没有用jai,暂时用jpeg编码代替了。   察看jimi的源码,在com.sun.jimi.core中是jimi的核心处理api。 public void toJPG(String source, String dest, int quality) { if (dest == null || dest.trim().equals(""))  dest = source; if (!dest.toLowerCase().trim().endsWith("jpg")) {  dest = ".jpg";  System.out.println("Overriding to JPG, output file: " dest); } if (quality < 0 || quality > 100 || (quality "") == null || (quality "").equals("")) {  System.out.println("quality must between ’0’ and ’100’");  System.out.println("set to DEFAULT value:’75’");  quality = 75; } try {  JPGOptions options = new JPGOptions();  options.setQuality(quality);  ImageProducer image = Jimi.getImageProducer(source);  JimiWriter writer = Jimi.createJimiWriter(dest);  writer.setSource(image);  // 加入属性设置,非必要  // /*  writer.setOptions(options);  // */  writer.putImage(dest); } catch (JimiException je) {  System.err.println("Error: " je); } } 在进行格式转换时,并不需要关心原图的格式,只要要转换的图片格式在jimi的解码格式范围内,就可以完全透明的进行decode过程: ImageProducer image = Jimi.getImageProducer(source);   实际的解码只需要以行代码,就这么简单。   编码过程最简单的也只需要很少的代码: JimiWriter writer = Jimi.createJimiWriter(dest); writer.setSource(image); // 加入属性设置,非必要 // /* writer.setOptions(options); // */ writer.putImage(dest);   以上代码就完成了图片编码到输出到os生成转换后文件的全过程。   上面代码中的 writer.setOptions(options)是用来对输出文件的属性进行相关的设置,每种格式的属性都不一样,com.sun.jimi.core.options.*中针对每种图片编码格式的相关属性提供了getter和setter方法,可以方便的进行设置:   com.sun.jimi.core.options.*中针对每种图片编码格式的相关属性提供了getter和setter方法,可以方便的进行设置: JPGOptions options = new JPGOptions(); options.setQuality(quality);   格式转换就这么简单。   jimi不支持的encode格式的解决 /** * * @param source * @param dest * @throws JimiException */ public void toGIF(String source, String dest) throws JimiException {  if (dest == null || dest.trim().equals(""))   dest = source;  // 1:转换为jpg  if (!dest.toLowerCase().trim().endsWith("jpg")) {   dest = ".jpg";  }  toJPG(source, dest, 75);  BufferedImage file_in = null;  File file = new File(dest);  try {   file_in = javax.imageio.ImageIO.read(file);  } catch (IOException e) {   e.printStackTrace();  }  int end = dest.lastIndexOf(".");  file.deleteOnExit();  // output *.gif  file.renameTo(new File(dest.substring(0, end) ".gif"));  // jpg to gif  AnimatedGifEncoder e = new AnimatedGifEncoder();  e.start(dest);  e.addFrame(file_in);  e.finish();   } 这里用到了AnimatedGifEncoder 类,是我在网上搜索到的,对gif编码提供了一个实现,虽然还有待晚善的地方,不过单作格式转关已经够用了:) AnimatedGifEncoder e = new AnimatedGifEncoder(); e.start(dest); e.addFrame(file_in); e.finish();   需要注意的是:AnimatedGifEncoder 不能对所有格式的图片正确的识别,所以先要将其他格式转为jpg格式(最简单的方法是用imageIO) BufferedImage file_in = null; File file = new File(dest); try {  file_in = javax.imageio.ImageIO.read(file); } catch (IOException e) {  e.printStackTrace(); }   这样直接放入BufferedImage中就ok了 e.addFrame(file_in);   实际的编码过程在上面这句完成。 int end = dest.lastIndexOf("."); file.deleteOnExit(); // output *.gif file.renameTo(new File(dest.substring(0, end) ".gif"));   最后,在完成之前别忘了用上面几句消灭证据哟:)   当然这种方法其实并不好,最彻底的方法是修改AnimatedGifEncoder,不过做人涅要厚道一点,毕竟是人家写的代码嘛,如果有兴趣的朋友可以讨论一下。   格式转换解决了,缩放功能也就不算是问题了,以下代码同时实现了格式转关和线性缩放: /** * * @param img * @param dest * @throws JimiException */ public void toTIF(Image img, String dest) throws JimiException {  if (!dest.toLowerCase().trim().endsWith("tif")) {   dest = ".tif";   System.out.println("Overriding to TIF, output file: " dest);  }  dest = dest.substring(0, dest.lastIndexOf(".")) ".jpg";  JimiWriter writer = Jimi.createJimiWriter(dest);  writer.setSource(img);  dest = dest.substring(0, dest.lastIndexOf(".")) ".tif";  writer.putImage(dest); } /** * 线性改变图片尺寸(可同时改变图片格式) * * @param source * 源文件完整路径 * @param desc * 目标文件完整路径 * @param ins * 放大/缩小比率 * @throws JimiException * @throws IOException */ public void changeDimension(String source, String desc, double ins) throws JimiException, IOException {  String temp = desc;  File _file = null;  if (desc == null || desc.trim().equals(""))   desc = source;  if (!desc.toLowerCase().trim().endsWith("jpg")) {   temp = desc.trim() ".jpg";  }  this.toJPG(source, temp, 75);  _file = new File(temp); // 读入文件  Image src = javax.imageio.ImageIO.read(_file); // 构造Image对象  double wideth = (double) src.getWidth(null); // 得到源图宽  double height = (double) src.getHeight(null); // 得到源图长  int iWideth = (int) (wideth * ins);  int iHeight = (int) (height * ins);  BufferedImage tag = new BufferedImage(iWideth, iHeight,  BufferedImage.TYPE_INT_RGB);  tag.getGraphics().drawImage(src, 0, 0, iWideth, iHeight, null); // 绘制缩小后的图  if (!temp.trim().equals(desc))   _file.deleteOnExit();  if (desc.toLowerCase().trim().endsWith("gif")) {   AnimatedGifEncoder e = new AnimatedGifEncoder();   e.start(desc);   e.addFrame(tag);   e.finish();  } else if (desc.toLowerCase().trim().endsWith("tif") || desc.toLowerCase().trim().endsWith("tiff")) {   this.toTIF(tag, desc);  } else {   JimiWriter writer = Jimi.createJimiWriter(desc);   writer.setSource(tag);   writer.putImage(desc);  } }   BufferedImage的构造函数中的参数类型为int,所以以上代码在改变图象尺寸时稍有偏差,不过简单演示一下还是可以的。   jimi的example中可以找到很多单项图片处理功能的demo,有时间可以研究一下,会有不少收获的。
ZXDoc工业级CAN总线仿真工具全解析与应用实践 CAN总线作为现代工业通信的核心协议,其仿真技术是汽车电子和工业控制领域的关键支撑。通过物理层信号模拟、协议层报文解析和应用层人机交互的三维仿真,开发者能够构建完整的硬件在环测试环境。ZXDoc作为工业级仿真工具,集成了DBC工程化管理、HMI面板设计和自动化测试脚本等核心功能,特别适用于ECU开发、产线验证等场景。工具支持ISO11898标准协议,提供错误帧注入、负载压力测试等高级特性,结合Python API可实现复杂测试用例的自动化执行。在新能源车VCU测试等实践中,通过优化采样点等参数配置,显著提升 阅读详情

相关推荐

【仓颉 + 鸿蒙 + AI Agent】CangjieMagic框架(3):Agent请求和响应

CangjieMagic框架:使用华为仓颉编程语言编写,专门用于开发AI Agent,支持鸿蒙、Windows、macOS、Linux等系统。这篇文章剖析一下 CangjieMagic 框架中的 AgentRequest 和 AgentResponse。

九丘教育官方博客 1475

Java判断图片文件格式,不是根据文件后缀判断

1、创建测试类(FileUtils.java) package com.jeff.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class FileUtils { publ...

weixin_45739720的博客 2437

STC8G1K08A的10位PWM避坑指南:为什么你的占空比调节总失效?(附寄存器操作时序图)

本文深入剖析了STC8G1K08A单片机10位PWM功能中占空比调节失效的核心原因,揭示了数据手册未明确指出的寄存器操作时序陷阱。通过对比错误与正确配置的波形,文章指出关键在于更新占空比高2位前需临时关闭PWM输出,并提供了经过验证的安全操作宏与函数库,帮助开发者彻底解决此问题,实现0%-100%的平滑控制。

yyy34的博客 751

基于Java的图片文件格式转换和线性缩放

        图片文件格式转换最核心的问题就是要解决各种图片格式的编码和解码,推荐用Jimi包,可从http://java.sun.com/products/jimi/下载该包及其源码和demo。 需要注意的是:Jimi提供了对几乎所有图片格式的解码支持,但是为提供gif和tif/tiff格式的编码api,gif编码问题在网上可以找到县相关的源码,tiff好像jai:http://java.s...

moonights的专栏 211

Android开发- (2)MediaProjection API实战:构建高效屏幕共享与远程控制方案

本文深入探讨了Android开发中利用MediaProjection API实现高效屏幕共享与远程控制方案的实战方法。文章从权限申请、虚拟屏幕创建讲起,详细解析了图像捕获、编码压缩、Socket网络传输的核心流程,并进一步介绍了如何构建双向控制通道及关键的性能优化与避坑指南,为开发者构建稳定可用的远程协作应用提供了完整路径。

weixin_29207533的博客 454

杰理 JL701N/JL703N USB MIDI 使用教程

摘要:本教程介绍如何在杰理JL701N/JL703N音箱的可视化SDK中配置USB MIDI功能。主要步骤包括:1)启用PC模式;2)修改SDK宏定义启用USB MIDI;3)实现MIDI数据接收处理逻辑;4)调用接口发送MIDI数据;5)使用MIDI-OX测试功能。针对低版本SDK可能出现的设备识别问题,提供了在midi.c文件中添加特定代码行的解决方案。使用前需确保SDK版本达标,并注意备份原始文件。

qq_42014563的博客 1268

java 图片文件 格式转换_基于java的图片文件格式转换和线性缩放

欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入 需要注意的是:AnimatedGifEncoder 不能对所有格式的图片正确的识别,所以先要将其他格式转为jpg格式(最简单的方法是用imageIO) BufferedImage file_in = null; File file = new File(dest); try {欢迎进入Java社区论坛,与200万技术人员互...

weixin_31164189的博客 434

Open3D 曲率下采样

曲率下采样是一种基于几何特征的点云处理技术,通过计算每个点的曲率来判断其所在位置的局部表面特征,从而进行选择性保留。曲率的计算通常基于点的法向量和其邻域点的分布。

纵马踏花向自由 841

java 图片文件 格式转换_Java的图片文件格式转换和线性缩放

Java的图片文件格式转换和线性缩放 来源:68design.net 2007年07月13日 08:31图片文件格式转换最核心的问题就是要解决各种图片格式的编码和解码,推荐用jimi包,可从 http://java.sun.com/products/jimi/ 下载该包及其源码和demo需要注意的是:jimi提供了对几乎所有图片格式的解码支持,但是为提供gif和tif/tiff格式的编码api,g...

weixin_42405852的博客 231

SAP Event Mesh 简介

Get Started with Messaging for Decoupled Communication Step 1: What is the SAP Event Mesh service? SAP Event Mesh 是一种完全托管的服务,用于连接应用程序、服务和系统,以便它们可以通过消息和事件相互交互。 它通过引入中央消息代理取代了传统的点对点通信。 虽然点对点通信适用于在有限数量的发送方和接收方之间共享数据,但可扩展性很快就会成为一个问题。 SAP Event Mesh 解决了这个问题,并确保

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1244

【漏洞复现】Apache Tomcat远程代码执行漏洞(CVE-2024-56337)

CVE-2024-56337是一个存在于Apache Tomcat中的TOCTOU(Time-of-Check Time-of-Use)竞争条件漏洞。此漏洞源于对先前漏洞(CVE-2024-50379)的不完整修复。若默认servlet是可写的(参数readonly设置值为false,该设置为非默认设置)表示不区分大小写文件系统,在负载下并发读取和上传同一文件可以绕过Tomcat的大小写检查。攻击者可以通过构造恶意请求上传含恶意JSP代码的文件,使其触发解析并执行这些文件,从而导致远程代码执行。

李同學AI安全 3197

基于Java的图片文件格式转换和线性缩放(2)

这里用到了AnimatedGifEncoder 类,是我在网上搜索到的,对gif编码提供了一个实现,虽然还有待晚善的地方,不过单作格式转关已经够用了:) AnimatedGifEncoder e = new AnimatedGifEncoder(); e.start(dest); e.addFrame(file_in); e.finish();   需要注意的是:AnimatedGifE...

ycb1689的专栏 796

深度测评:Accio Work——目前普通用户最友好的多 Agent 协同工具

摘要:Accio Work是阿里国际站推出的多Agent协同工具,通过借鉴古代"三省六部制"构建高效协作框架。该工具支持主流大模型,可配置专业Agent角色,实现40分钟内完成复杂产品PRD等高效协作。其亮点在于直观的UI设计和流程驱动机制,能强制各Agent从专业视角深度思考。虽然超长对话稳定性有待优化,但作为目前最用户友好的多Agent工具,显著降低了构建复杂AI团队的门槛,成为提升个人和小微企业生产力的利器。

Maynor的博客 1741

收藏.JAVA.图片文件格式转换和线性缩放

图片文件格式转换最核心的问题就是要解决各种图片格式的编码和解码,推荐用jimi包,可从http://java.sun.com/products/jimi/下载该包及其源码和demo。  需要注意的是:jimi提供了对几乎所有图片格式的解码支持,但是为提供gif和tif/tiff格式的编码api,gif编码问题在网上可以找到县相关的源码,tiff好像jai:http://java.sun.com/p

_CHRYTHON 930

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

基于Java的图片文件格式转换和线性缩放(1)

图片文件格式转换最核心的问题就是要解决各种图片格式的编码和解码,推荐用Jimi包,可从http://java.sun.com/products/jimi/下载该包及其源码和demo。 需要注意的是:Jimi提供了对几乎所有图片格式的解码支持,但是为提供gif和tif/tiff格式的编码api,gif编码问题在网上可以找到县相关的源码,tiff好像jai:http://java.sun.com/p...

ycb1689的专栏 773

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

基于java的图片文件格式转换和线性缩放-Java基础-Java-编程开发

google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//<script type="text/javascript"

java专栏 361

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java图片处理实战:从ImageIO、Graphics2D到Thumbnailsator的完整指南

图片处理是软件开发中的基础且高频需求,涉及图像编码、解码、像素操作等核心概念。其原理基于计算机图形学,通过操作内存中的图像数据模型(如BufferedImage)和图形上下文(如Graphics2D)来实现缩放、裁剪、合成等功能。掌握这项技术能显著提升应用性能、降低对外部服务的依赖,并优化用户体验。在Java生态中,ImageIO和Graphics2D构成了处理图片的基石,而Thumbnailsator等工具库则进一步封装了常见操作,提升了开发效率。这些技术广泛应用于用户头像处理、商品图册生成、报表水印添加

weixin_34185512的博客 164
上一篇: Java 语法高亮显示JHighlight 1.0 初版发布
下一篇: 澄清 Java 的接口与继承机制
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值