iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java BufferedImage转换为MultipartFile方式
  • 489
分享到

Java BufferedImage转换为MultipartFile方式

2024-04-02 19:04:59 489人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录BufferedImage转换为MultipartFile方法一方法二Java数据转存的中MultipartFile转File错误背景通过搜索引擎 找到了以下两种方法Buffer

BufferedImage转换为MultipartFile

Java里读取图片或调整图片大小可使用BufferedImage进行操作(参考我另一篇文章Java修改图片大小尺寸),但有时候我们需要将BufferedImage转为MultipartFile进行其他操作可如下转换:

方法一

1.新建ConvertToMultipartFile类实现MultipartFile接口


import org.springframework.WEB.multipart.MultipartFile;
import java.io.*;
public class ConvertToMultipartFile implements MultipartFile {
    private byte[] fileBytes;
    String name;
    String originalFilename;
    String contentType;
    boolean isEmpty;
    long size;
    public ConvertToMultipartFile(byte[] fileBytes, String name, String originalFilename, String contentType,
                          long size) {
        this.fileBytes = fileBytes;
        this.name = name;
        this.originalFilename = originalFilename;
        this.contentType = contentType;
        this.size = size;
        this.isEmpty = false;
    }
    @Override
    public String getName() {
        return name;
    }
    @Override
    public String getOriginalFilename() {
        return originalFilename;
    }
    @Override
    public String getContentType() {
        return contentType;
    }
    @Override
    public boolean isEmpty() {
        return isEmpty;
    }
    @Override
    public long getSize() {
        return size;
    }
    @Override
    public byte[] getBytes() throws IOException {
        return fileBytes;
    }
    @Override
    public InputStream getInputStream() throws IOException {
        return new ByteArrayInputStream(fileBytes);
    }
    @Override
    public void transferTo(File dest) throws IOException, IllegalStateException {
        new FileOutputStream(dest).write(fileBytes);
    }
}

2.BufferedImage 转换为 MultipartFile

BufferedImage 先转为byte[ ],再通过上面的ConvertToMultipartFile类转为MultipartFile


 try {
            //读取图片转换为 BufferedImage
            BufferedImage image = ImageIO.read(new FileInputStream("F:/test/pic1.jpg"));
            //BufferedImage 转化为 ByteArrayOutputStream
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            ImageIO.write(image, "jpg", out);
            //ByteArrayOutputStream 转化为 byte[]
            byte[] imageByte = out.toByteArray();
            //将 byte[] 转为 MultipartFile
            MultipartFile multipartFile = new ConvertToMultipartFile(imageByte, "newNamepic", "pic1", "jpg", imageByte.length);
      } catch (IOException e) {
            e.printStackTrace();
      }

方法二

引入依赖:


    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>5.3.2</version>
        <scope>compile</scope>
    </dependency>

 try {
    //读取图片转换为 BufferedImage
            BufferedImage image = ImageIO.read(new FileInputStream("F:/test/pic1.jpg"));
            //调整图片大小后的BufferedImage。resizeImage方法是调整图片大小的可参考文章开头我上一篇文章
            BufferedImage newImage = ImageUtils.resizeImage(image, 200, 200);
            //将newImage写入字节数组输出流
   ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ImageIO.write( newImage, "jpg", baos );
            
   //转换为MultipartFile 
            MultipartFile multipartFile = new MockMultipartFile("pic1.jpg", baos.toByteArray());
       } catch (IOException e) {
            e.printStackTrace();
       }

Java数据转存的中MultipartFile转File

错误背景

由于文件储存在第三方的服务器上,所有需要讲将接收到MultipartFile文件 转换为File 然后传输。(Spring mvc

通过搜索引擎 找到了以下两种方法

均要在先spring xml中声明。如下: 


<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />  

如需添加最大,最小等范围控制,请自行百度参考。

方法一:强转

方法二:


CommonsMultipartFile cf = (CommonsMultipartFile)multfile;  
DiskFileItem fi = (DiskFileItem) cf.getFileItem(); 
File file = fi.getStoreLocation();

亲测有效。但是后期发现设置的问题 导致文件转换中错误,文件不可读从而导致 程序抛出 is not a nORMal file 异常。

因为错误出现的随机性很大,所以选择用缓冲区来实现这个转换即使用java 创建的临时文件 使用 MultipartFile.transferto()方法 。

代码如下:


File f = null;
try {
    f=File.createTempFile("tmp", null);
    file.transferTo(f);<br>   f.deleteOnExit();        
} catch (HttpException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

亲测有效。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: Java BufferedImage转换为MultipartFile方式

本文链接: https://www.lsjlt.com/news/136006.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java BufferedImage转换为MultipartFile方式
    目录BufferedImage转换为MultipartFile方法一方法二Java数据转存的中MultipartFile转File错误背景通过搜索引擎 找到了以下两种方法Buffer...
    99+
    2024-04-02
  • java中MultipartFile互转File的方法
    目录MultipartFile转FileFile转MultipartFile  PS:file转base64字符串MultipartFile转File 公司业务遇到需要接收...
    99+
    2024-04-02
  • SpringMVC中MultipartFile转File的两种方式
    在spring上传文件中,一般都使用了MultipartFile来接收,但是有需要用到File的地方,这里只介绍两种转为File的方法,当然也有一些其他的方法,我试了有些错误,所以就...
    99+
    2024-04-02
  • Python中Timedelta转换为Int或Float方式
    目录Timedelta转换为Int或Float方式Pandas处理Numpy处理区别timedelta、float 互转Timedelta转换为Int或Float方式 Pandas处...
    99+
    2024-04-02
  • springBoot集成mybatis转换为mybatis-plus方式
    目录导入maven更新yml文件添加扩展文件BaseEntity 用于定义modelCreateAndUpdateMetaObjectHandler批量插入/更新 mapper需要继...
    99+
    2024-04-02
  • Java将RTF转换为PDF格式的实现
    目录Jar包引入完整代码RTF文件的出色之处在于它的灵活性。RTF文件的性质使其非常适合那些使用不同软件进行工作的人。当然,这并不意味着文件应该永远保存为RTF文件。 有时我们希望将...
    99+
    2024-04-02
  • Java坐标系相互转换方式
    目录Java坐标系相互转换Java任意两个坐标系转换首先是实体类计算工具类Java坐标系相互转换 1. WGS-84原始坐标系,一般用国际GPS纪录仪记录下来的经纬度,通过GPS定位...
    99+
    2024-04-02
  • JAVA 对象转换为JSON
    转载:如何把java对象转换为json java对象怎么转成json_clghxq的技术博客_51CTO博客 Java对象列表转换为JSON对象数组,并转为字符串 JSONArray jsonArray = JSONArray.fromOb...
    99+
    2023-09-06
    java json 开发语言
  • Java将字符串String转换为整型Int的两种方式
    目录Java 如何将String转化为Int附录:Java将字符串String转换为整型Int用法注意点性能比较Java 如何将String转化为Int 在 Java 中要将 Str...
    99+
    2023-05-16
    Java 字符串String转换int Java String转换int
  • php将word转换为html格式的方法
    本篇内容主要讲解“php将word转换为html格式的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php将word转换为html格式的方法”吧!PHP将上传word文件,转化为Html格式...
    99+
    2023-06-20
  • Java之String类型的编码方式转换
    目录String类型的编码方式转换String字符集的编码和解码String编码String解码总结String类型的编码方式转换 在JAVA中,String类型的编码方式转换,St...
    99+
    2023-02-28
    Java String类型 String类型编码 String类型编码转换
  • mgg格式如何转换为mp3
    小编给大家分享一下mgg格式如何转换为mp3,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!转换方法:1、打开QQ音乐,依次点击“主菜单”-“音频转码”;2、打开音...
    99+
    2023-06-07
  • html格式如何转换为txt格式
    这篇文章将为大家详细讲解有关html格式如何转换为txt格式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。html有什么特点1、简易性:超级文本标记语言版本升级采用超集方式,从而更加灵活方便,适合初学前端...
    99+
    2023-06-14
  • springboot加载一个properties文件转换为map方式
    目录加载一个properties文件转换为map1.创建一个properties文件2.在java中将该properties文件转换为mapproperties配置文件出现乱码加载一...
    99+
    2024-04-02
  • Java中将数组转换为List
    今天就跟大家聊聊有关Java中将数组转换为List,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一.最常见方式(未必最佳)通过 Arrays.asList(strArray) &nb...
    99+
    2023-06-16
  • Java 将Word文档转换为PDF
    前言本文将介绍如何使用免费Java Word组件Free Spire.Doc for Java在Java应用程序中将Word文档转换到PDF格式。Free Spire.Doc for Java在转换过程中能够识别中文字符并支持丰富的word...
    99+
    2023-06-02
  • kotlin怎么转换为java代码
    要将Kotlin代码转换为Java代码,可以使用以下步骤:1. 打开Kotlin文件,并将其复制到剪贴板中。2. 在Android ...
    99+
    2023-09-20
    java kotlin
  • 在Java中将InputStream转换为File
    在Java中将InputStream转换为File 在Java中,我们经常需要处理输入流(InputStream)和文件(File)之间的转换。将InputStream转换为File可以帮助我们更方便...
    99+
    2023-10-20
    java 开发语言 Java
  • Java和Scala集合间的相互转换方式
    目录Java和Scala集合间的相互转换scala与java互转Java与Scala的集合对比一、Java集合1、Collection=>Set接口2、Collection=&...
    99+
    2024-04-02
  • 在Java中将double转换为int的操作方法
    在本文中,我们将看到如何将double转换为int。 在Java编程中,您将有一个double原语值(例如82.14),但是要执行进一步的操作,您需要一个int值(例如82),所以让...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作