Java实现bmp和jpeg图片格式互转
作者:划]破 发布时间:2023-12-19 10:39:50
标签:Java,bmp,jpeg
Bmp转Jpeg
public static String bmp2Jpeg(String filePath, String outPath) {
?? ?try {
?? ??? ?long start = System.currentTimeMillis();
?? ??? ?// 加载bmp图片
?? ??? ?File file = new File(filePath);
?? ??? ?Image img = ImageIO.read(file);
?? ??? ?BufferedImage tag = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB);
?? ??? ?tag.getGraphics().drawImage(img.getScaledInstance(img.getWidth(null), img.getHeight(null), Image.SCALE_SMOOTH), 0, 0, null);
?? ??? ?// 输出为Jpeg
?? ??? ?FileOutputStream out = new FileOutputStream(outPath);
?? ??? ?// JPEGImageEncoder可适用于其他图片类型的转换
?? ??? ?JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
?? ??? ?encoder.encode(tag);
?? ??? ?out.close();
?? ??? ?
?? ??? ?log.info("bmp 转 JPEG,共耗时: ?" + (System.currentTimeMillis() - start) + " 毫秒");
?? ??? ?return outPath;
?? ?} catch (IOException e) {
?? ??? ?e.printStackTrace();
?? ?}
?? ??? ?return outPath;
?? ?}
Jpeg转Bmp
public static void jpeg2Bmp(String inputPath, String outputPath) {
try {
long start = System.currentTimeMillis();
// 加载Jpeg图片资源
FileImageInputStream fiis = new FileImageInputStream(new File(inputPath));
FileImageOutputStream fios = new FileImageOutputStream(new File(outputPath));
ImageReader jpegReader = null;
Iterator<ImageReader> it1 = ImageIO.getImageReadersByFormatName("jpeg");
if (it1.hasNext()) {
jpegReader = it1.next();
}
jpegReader.setInput(fiis);
ImageWriter bmpWriter = null;
Iterator<ImageWriter> it2 = ImageIO.getImageWritersByFormatName("bmp");
if (it2.hasNext()) {
bmpWriter = it2.next();
}
bmpWriter.setOutput(fios);
BufferedImage br = jpegReader.read(0);
bmpWriter.write(br);
fiis.close();
fios.close();
log.info("jpeg 转 bmp,共耗时:" + (System.currentTimeMillis() - start) + " 毫秒");
} catch (IOException e) {
e.printStackTrace();
}
}
来源:https://blog.csdn.net/qq_17847881/article/details/129096654


猜你喜欢
- 一、导入前言:导入必须用post请求具体原因在2中叙述1、Excel导入总结一下目标,就是要将excel中的数据行、逐一提取,最后得到一个l
- IDEA SpringBoot项目配置热更新的步骤1.在pom.xml中添加依赖:<dependency><groupId
- 见过一句夸张的话,叫做“没有阅读过jdk源码的人不算学过java”。从今天起开始精读源码。而适合精读的源码无非就是java.io,.util
- 在.NET FrameWork中有多个Timer,那么怎么根据实际情况进行选择确实是一个问题。总体而言,计时器共有以下四种:多线程计时器:1
- 单链表:每个数据是以节点的形式存在的每个节点分为数据域和指针域数据域中保存该节点的数据指针域中保存指向下一个节点的指针实现思路:节点类Sin
- 它所表示的是“这部分是无法修改的”。不想被改变的原因有两个:效率、设计。使用到final的有三种情况:数据、方法、类。一、 final数据有
- 在一些环境中,可能需要把Web应用做成无状态的,即服务器端无状态,就是说服务器端不会存储像会话这种东西,而是每次请求时带上相应的用户名进行登
- Toast一般用来显示一行文字,用法比较固定:Toast.makeText(Context context,String message,i
- 不啰嗦,上菜 QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.se
- 1、完美1比1 仿照微信仿微信发动态 九宫格拖拽、删除暴力拖拽ui有点问题,不影响使用,资源文件自己找个+号2、微信发动态拖拽bug当选择完
- 最近公司的一款产品提交国内市场,发现有些国内市场提示需要进行应用认领。原因就是别人(或者市场抓取)已经在我们之前将这个应用提交到了该市场。认
- 最近经常在机房看同学在玩一个走迷宫的游戏,比较有趣,自己也用java写一个实现随机生成迷宫的算法,其实就是一个图的深度优先遍历算法.基本思想
- System.Collections.ArrayList类是一个特殊的数组。通过添加和删除元素,就可以动态改变数组的长度。一.优点1. 支持
- 说明本项目采用 maven 结构,主要演示了 spring mvc + mybatis,controller 获取数据后以json 格式返回
- 报错翻译: compileSdkVersion android-24”需要JDK 1.8或更高版本编译。报错现象如下图:原因:st
- .Net为我们提供了众多的泛型集合。比如,Stack<T>先进后出,Queue<T>先进先出,List<T&g
- Android 7.0行为变更 FileUriExposedException解决方法当我们开发关于【在应用间共享文件】相关功能的时候,在A
- 一.HashMap 和Hashtable 的区别我们先看2个类的定义 public class Hashtable exten
- java中的interface接口实例详解接口:Java接口是一些方法表征的集合,但是却不会在接口里实现具体的方法。java接口
- 使用命令行的方式管理服务器镜像及容器是运维人员最常用的方式,但是有的时候我们不得不远程操作docker或者是面向对docker并不熟悉的技术