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

遥感新手别纠结!实测ENVI 5.3、5.6、6.0三个免费版,教你混搭安装避坑 本文为遥感新手提供ENVI 5.3、5.6、6.0三个免费版的实测对比与混搭安装指南,帮助用户构建零成本高效工作流。详细解析各版本功能差异、共存安装技巧及常见问题解决方案,特别适合课程作业、毕业论文分析和遥感入门练习。 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 基于java的图片文件格式转换和线性缩放 阅读次数1037 出处 CCID -------------------------------------------------------------------------------- 图片文件格式转换最核心的问题就是要解决各种图片格式的编码和解码,推荐用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,有时间可以研究一下,会有不少收获的。
多物理场耦合仿真-主题032-电磁-流体耦合 电磁-流体耦合,即磁流体动力学(MHD, Magnetohydrodynamics),是研究导电流体在电磁场中运动规律的学科,涉及电磁场与流体力学的深度耦合。本主题系统阐述磁流体动力学的基本理论、控制方程和数值方法。首先介绍MHD的基本概念和物理基础,包括导电流体的性质、电磁场基本方程;然后详细推导MHD控制方程组,包括连续性方程、动量方程、能量方程和电磁场方程;接着讨论MHD流动的特征参数,如Hartmann数、磁雷诺数、相互作用参数等;最后通过六个典型工程案例展示MHD分析的实际应用,包括电磁泵、磁流体 阅读详情

相关推荐

基于Ansys Fluent和Mechanical的血管稳态流固耦合模型

流固耦合模型在医学中也会被用到,本次小编为大家带来针对人造血管内血液流动的仿真实例。 在开物云平台上找到Workbench 点击进入:https://cloud.yuansuan.cn/?user_source=community 在左侧的Toolbox中找到对应的模块:Fluid Flow(Fluent)和Static Structure 双击“Geometry”,进入建模功能 文件-打开-找到保存的模型文件 退回到主界面,在fluid flow(Fluent)中找到mesh

huasheng233的博客 3911

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

手把手教你学Simulink——基于Simulink的变换器老化预测与数字孪生(Digital Twin)

这不仅是技术的演进,更是从“事后救火”到“事前预言”的降维打击。:通过本文的实战演练,你不仅掌握了功率变换器“电气-热-老化”多物理场耦合的建模哲学,更深刻领悟了如何将高深的随机过程(粒子滤波)降维成可落地、可量产的工程工具;:起初,由于数据量少,粒子滤波器预测的剩余寿命(RUL)置信区间(95%)非常宽泛(如 1000~2000小时)。在工业4.0与智能制造的浪潮下,功率变换器(如光伏逆变器、车载OBC、服务器电源)不再是孤立的硬件,而是具备“自我感知”与“寿命预知”的智能节点。

MHD0815的博客 299

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

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

moonights的专栏 211

流媒体弱网优化之路(NACK)——纯NACK方案的优化探索

流媒体学习之路(NACK)——纯NACK方案的最高性能 文章目录流媒体学习之路(NACK)——纯NACK方案的最高性能一、NACK简介二、Nack的理解2.1 一种补救策略2.2 什么时候要?2.3 要多少?2.4 怎么要?三、计算分析3.1 rtt强相关3.2 补包次数计算3.3 Nack的定时发送3.4 nack重传限制四、实验   近期在针对纯丢包场景做一些简单的探索实验,一个让我困扰的问题就是:不使用FEC而只是通过纯NACK进行补偿,到底能在实验环境下抵抗多少的丢包呢?每一次丢包补偿的最大时长

qw225967的博客 1万+

3DE重客户端安装

3DE重客户端安装

m0_48170265的博客 9438

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

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

weixin_31164189的博客 434

三部对接 sora-2:OpenAI 最新视频模型快速接入指南

本文介绍OpenAI最新视频生成模型Sora-2的接入方案,重点解析其Chat格式调用功能。开发者可通过在提示词中嵌入"横屏/竖屏""时长""清晰度"等要求快速生成视频。文章分三部分:1)基础准备(环境配置与API密钥获取);2)核心调用(提供Python/Java示例代码);3)结果查询与优化建议。Sora-2支持多语言调用,简化了视频生成流程,适用于短视频、广告创意等场景。

2501_93565190的博客 3436

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

S32DS新建工程、编译调试下载、导入工程详细介绍

新建了一个工程之后,下面简单介绍下基本的UI界面。其中最左下角那个是界面,这个界面很重要,是图形化配置界面,然后可以根据这些配置自动生成代码。其中,左边那些配置文件,都是系统帮我们创建好了的,我们其实可以直接用就行。有PE工具的调试,以及Jlink工具的调试。我目前使用到PE工具调试可以查看寄存器值,而Jlink调试查看不了寄存器值。连接了开发板之后,点击Debug就可以吧程序下载到芯片上了,而且可以进入到调试界面。

luobeihai的博客 2万+

火焰烟雾识别系统【数据集+源码+UI界面】

数据集准备:收集并标注火焰与烟雾数据。YOLOv10训练:训练YOLOv10模型来识别火焰和烟雾。实时检测:通过摄像头视频流进行实时检测,并显示检测结果。UI界面设计:用Tkinter设计简易界面,显示检测结果。完成以上步骤后,可以实现一个完整的火焰烟雾识别系统,具备实时检测与友好的用户界面。

2201_76125393的博客 1136

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

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

ycb1689的专栏 796

MIKE水动力笔记8_冷启动与热启动

在【MIKE水动力笔记5_建立水动力模型】中,讲到【Step 2 设置模型参数】中的【Initial Conditions】时,提到了冷启动与热启动。本博文就详细讲解何为冷启动、热启动,并通过一个案例具体分析两者不同。...

晏长街的博客 6569

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

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

_CHRYTHON 930

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

基于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

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

基于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

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

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

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

weixin_34185512的博客 165
上一篇: Java 理论与实践:让 J2EE 脱离容器
下一篇: Java开源 Job Schedulers-Quartz
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值