-
2021-10-27 15:33:18
本文概括
前端访问后端接口上传webp格式文件,后端将webp文件转换成png格式
项目maven依赖
<!-- https://mvnrepository.com/artifact/org.sejda.imageio/webp-imageio --> <dependency> <groupId>org.sejda.imageio</groupId> <artifactId>webp-imageio</artifactId> <version>0.1.6</version> </dependency>
后端代码如下
package com.geer2.just.photo.system.controller; import com.luciad.imageio.webp.WebPReadParam; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.stream.FileImageInputStream; import java.awt.image.BufferedImage; import java.io.*; @RestController @RequestMapping("/file22") public class Test { /** * 上传webp文件转成png格式 * @param mulFile * @throws Exception */ @PostMapping("/upload") public void photoList(@RequestParam("file") MultipartFile mulFile) throws Exception { File file = multipartFileToFile2(mulFile); } /** * 将MultipartFile转为File * @param mulFile * @return */ public static File multipartFileToFile2(MultipartFile mulFile) throws IOException { InputStream ins = mulFile.getInputStream(); String fileName = mulFile.getOriginalFilename(); String prefix = getFileNameNoEx(fileName); String suffix = "."+getExtensionName(fileName); File toFile = File.createTempFile(prefix,suffix); OutputStream os = new FileOutputStream(toFile); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) { os.write(buffer, 0, bytesRead); } os.close(); ins.close(); //webp文件转png后文件地址包含文件名字 String news = toFile.getParent()+"/"+ toFile.getName().substring(0,toFile.getName().indexOf(".webp"))+".png"; return webpToPng(toFile,new File(news)); } /** * 获取文件扩展名 * */ public static String getExtensionName(String filename) { if ((filename != null) && (filename.length() > 0)) { int dot = filename.lastIndexOf('.'); if ((dot >-1) && (dot < (filename.length() - 1))) { return filename.substring(dot + 1); } } return filename; } /** * 获取不带扩展名的文件名 * */ public static String getFileNameNoEx(String filename) { if ((filename != null) && (filename.length() > 0)) { int dot = filename.lastIndexOf('.'); if ((dot >-1) && (dot < (filename.length()))) { return filename.substring(0, dot); } } return filename; } /** * 图片webp文件转png文件 * @param webpFile 源webp文件 * @param pngFile 转换后png文件 * @return * @throws IOException */ public static File webpToPng(File webpFile, File pngFile) throws IOException { // Obtain a WebP ImageReader instance ImageReader reader = ImageIO.getImageReadersByMIMEType("image/webp").next(); // Configure decoding parameters WebPReadParam readParam = new WebPReadParam(); readParam.setBypassFiltering(true); // Configure the input on the ImageReader reader.setInput(new FileImageInputStream(webpFile)); // Decode the image BufferedImage image = reader.read(0, readParam); //the `png` can use `jpg` ImageIO.write(image, "png", pngFile); return pngFile; } }
更多相关内容 -
webp格式图片转jpg工具
2018-03-23 11:32:18现在越来越多的网页用的是webp格式图片,但是有时候下载不能为自己所用,这个 XnConvert软件可以轻松把webp格式图片转成jpg等多种格式 -
如何把webp转换为jpg
2022-03-24 18:18:01如何把webp转换为jpg@[TOC](如何把webp转换为jpg)1.流转换2.单独一张图片转换3.文件夹图片转换4.嵌套文件夹图片转换5. 数据 首先做一个简单的科普,webp后缀的图片是在网页上浏览的时候默认保存的格式,但是真的用...如何把webp转换为jpg
===================================================================
首先做一个简单的科普,webp后缀的图片是在网页上浏览的时候默认保存的格式,但是真的用起来还是会有些不方便,转换成jpg比较好用,所以今天才要发此文1.流转换
from PIL import Image from io import BytesIO # 字节数 import logging # import requests def change_webp_to_jpg(webp_content): """ 将webp图片格式转换为jpg格式 :param webp_content: webp图片字节流 :return: jpg图片字节流 """ jpg_content = "" # jpg内容字符空串 try: if webp_content.upper().startswith(b"RIF"): # if条件判断==>webp内容字符串全部大写并且是以"RIF"开头的==>进入下一步 im = Image.open(BytesIO(webp_content)) # 把webp内容字符串变成字节数然后在Image中打开赋值给im对象 if im.mode == "RGBA": # if条件判断==>im对象的mode的值为"RGBA"==>进入下一步 im.load() # 加载图像对象 background = Image.new("RGB", im.size, (255, 255, 255)) # 三个参数分别代表图像模式mode/格式、图像尺寸size(width, height)、图像颜色color(255, 255, 255)是白色 background.paste(im, mask=im.split()[3]) # 把加载好的im图像数据粘贴到background变量中,mask即为可选的掩码图像 im = background # 把复制好掩码的background变量赋值给im图像对象 img_byte = BytesIO() # 创建字节数对象img_byte jpg_content = img_byte.getvalue() # 从字节数对象中获取值赋值给jpg内容字符串 im.save(img_byte, format="JPEG") # 保存字节数对象为jpeg后缀的图片 except Exception as err: logging.error(err) # 日志记录抛出的异常 return jpg_content if jpg_content else webp_content # 如果jpg_content存在则返回,如果不存在则返回webp_content # 第一种本地图片直接转换 with open("photos/u=1493708783,2730997375&fm=253&fmt=auto&app=138&f=JPEG.webp", "rb") as f: # 以二进制文件读取的方式rb来读取webp文件 readlines = f.read() # 二进制文件rb读取正确并赋值给变量readlines才会保留值到后边的jpg_binary,否则下边的jpg_binary是空串b'' print("readlines------------------", readlines) jpg_binary = change_webp_to_jpg(readlines) # 调用change_webp_to_jpg函数,传入二进制文件读取的结果字符串,然后赋值给jpg_binary变量 print("readlines------------------", readlines) print("jpg_binary------------------", jpg_binary) with open("photos/u=1493708783,2730997375&fm=253&fmt=auto&app=138&f=JPEG.jpg", "wb") as fp: # 以二进制文件写入的方式来写入jpg文件 fp.write(jpg_binary) # 文件写入,传参是上一步保存的jpg_binary变量,代表的是webp转换为jpg后的字节数对象赋值给的jpg内容字符串 """ readlines------------------ b'RIFF\xb4\xf3\x00\x00WEBPVP8 \xa8\xf3\x00\x00\xf0\xd5\x02\x9d\x01* \x03\xf4\x01>\x91>\x99H%\xa3\xa2\xa1.X*0\xb0\x12\tM\xdc.\ readlines------------------ b'RIFF\xb4\xf3\x00\x00WEBPVP8 \xa8\xf3\x00\x00\xf0\xd5\x02\x9d\x01* \x03\xf4\x01>\x91>\x99H%\xa3\xa2\xa1.X*0\xb0\x12\tM\xdc.\ jpg_binary------------------ b'RIFF\xb4\xf3\x00\x00WEBPVP8 \xa8\xf3\x00\x00\xf0\xd5\x02\x9d\x01* \x03\xf4\x01>\x91>\x99H%\xa3\xa2\xa1.X*0\xb0\x12\tM\xdc. """ # # 第二种url响应的图片 # url = "webp的url图片" # headers = {} # resp = requests.get(url, headers=headers) # jpg_binary = change_webp_to_jpg(resp.content) # with open("code.jpg", "wb") as fp: # fp.write(jpg_binary)
2.单独一张图片转换
import os from PIL import Image # 图像路径 # path = "u=1493708783,2730997375&fm=253&fmt=auto&app=138&f=JPEG.webp" path = "photos/u=1769281506,2418317477&fm=253&fmt=auto&app=138&f=JPEG.webp" # 用Image打开并识别webp图像并赋值给img img = Image.open(path) # 加载img img.load() # 把图像后缀保存成.jpg格式 # img.save("草莓1.jpg") img.save("草莓2.jpg")
3.文件夹图片转换
import os from PIL import Image class processImage(): """ 一个批量将webp文件转换成jpg的程序 """ def __init__(self): self.path = r"photos/" # 一个参数,文件夹的位置 # 读取文件夹下的所有文件(包含文件夹) def loadFile(self): fileList = os.listdir(self.path) # print(fileList) return fileList # 返回列表 # 查找文件夹下所有webp的图像 def webp2jpg(self, fileList:list): for item in fileList: # 循环读取文件列表,得到的item是列表中有的每一个文件名 if item.endswith('.webp'): # 如果文件名以.webp结尾 src = os.path.join(os.path.abspath(self.path), item) # 获取文件的绝对路径 print("src=", src) # 打印绝对路径看是否符合预期 im = Image.open(src) # 用Image打开绝对路径存放的图片并赋值给im对象 im.load() # 加载im对象的图片 save_name = src.replace('webp', 'jpg') # 在绝对路径中图片的后缀替换并把替换后的新路径赋值给save_name变量 im.save('{}'.format(save_name), 'JPEG') # 用新路径保存到im对象中并指定图片格式 if __name__ == '__main__': nc = processImage() # 创建对象 fileList = nc.loadFile() # 用对象调用加载文件的方法,读取文件夹下的所有文件,保存成列表并返回 nc.webp2jpg(fileList) # 用对象调用webp转换到jpg的方法
4.嵌套文件夹图片转换
import os from PIL import Image path = "新数据" # 嵌套文件夹外层的相对路径 namelist = os.listdir(path) # 列出嵌套文件夹中各个不同类别的文件夹名称并用列表返回 for n in namelist: # 遍历嵌套文件夹中的各个分类 print("类别名称:", n) # 打印各个类别文件夹名称 path2 = os.path.join(path, n) # 把嵌套文件夹的外层和内层的文件夹路径拼接到一起,赋值给新的路径path2 photos = os.listdir(path2) # 遍历嵌套文件夹中的子文件夹中的所有webp格式的图片并用列表返回赋值给photos print("类别名称下的照片:", photos) # 打印每个子文件夹中的图片名称列表photos并查看 for p in photos: # 遍历每个子文件夹中的图片 print(p) # 每次遍历的时候打印出来图片的名称 # path3 = os.path.join(path2, p) path3 = os.path.join(path2, p) # 拼接子文件夹和图片名称组成新的路径并赋值给path3 print("每张照片的绝对路径:", path3) # 打印并查看子文件夹中每一张图片的路径 im = Image.open(path3) # 用Image打开path3路径中存放的图片并赋值给im对象 im.load() # 用im对象加载每次遍历所传入的图片 save_name = path3.replace("webp", "jpg") # 对path3路径中图片的后缀做替换,从webp替换成jpg,并把新的路径返回给变量save_name im.save('{}'.format(save_name), "JPEG") # 用im对象保存jpg后缀的图片路径,并指定图片格式为JPEG==>最后生成同样数量的新的格式jpg的图片
5.数据
感谢大佬,参考网址如下:
[1]https://blog.csdn.net/weixin_43411585/article/details/107787613
[2]https://www.cnblogs.com/mafu/p/15428480.html感谢大家的关注和支持
希望我写的文章能够让你们得到价值有所收获
一直在路上,还请各位多多指正! -
如何将webp批量转换jpg?
2022-02-28 13:24:57今天为大家介绍如何一键将webp批量转换jpg,小编这里就有一个很好的办法,都快来学习吧,一分钟学会,有详细的操作方法。如何将webp批量转换jpg?说到图片格式,大家首先想到的是jpg和png这两种常见的,随着计算机计算的发展涌现出了越来越多的图片格式,很多都是我们没有遇见过的,例如webp图片,第一次看到还以为是其他什么文件格式。webp是一种不常用的图片格式,所以并不能在所有平台上随便使用,所以需要将它格式转换成jpg或者png。
我们工作时往往要给很多图片进行格式转换,一张一张的转换挺浪费时间的,所以今天为大家介绍如何一键将webp批量转换jpg,小编这里就有一个很好的办法,都快来学习吧,一分钟学会。
使用的软件工具:优速图片格式转换器
软件工具下载:https://download.yososoft.com/jimp/2.0.1/jimp_2.0.1.exe
详细的转换步骤:
步骤1,打开电脑,然后下载“优速图片格式转换器”并安装打开使用,工具有五个图片处理功能,我们选择【格式转换】功能,然后进入下一步操作。
步骤2,点击左上角【添加文件】按钮,将需要转换格式的webp图片全部导入到软件中。然后在右下方将输出格式设置成jpg,当然如果有需求,也可以设置成其他格式。
步骤3,先设置输出目录,保存转换后的图片,如果不设置输出目录默认为电脑桌面。再点击【开始转换】红色按钮,这样就启动软件程序了。
步骤4,所有图片完成格式转换后软件会自动打开输出文件夹,从结果可以看到,所有的webp图片全部转成了jpg格式。
webp是一种不常见也不常用的图片格式,兼容性较差,很多时候不支持webp图片的上传和使用,所以需要将其转成常用的jpg格式,很多人不知道如何转换,并且webp图片不能在ps中转换格式。上面小编就为大家详细介绍了如何将webp批量转换jpg,简单使用,快去试一试吧。
-
Webp格式转换工具(PNG/JPG/GIF/Webp互转)
2017-02-13 09:11:32PNG/JPG/GIF 与 Webp 格式互换工具,可自定义压缩质量,支持多级文件夹自动遍历,多个文件,一键搞定。Windows版,需要dotNet3.5环境支持哦! -
webp批量转换成jpg的方法
2021-12-22 14:52:55今天为大家详细介绍webp批量转换成jpg的方法,免去大家一个一个进行图片转换的烦恼,赶快来学习这个实用的办公技巧吧!webp图片可能很多小伙伴接触的不是很多,它是一种使用不是多的图片格式,与jpg图片一样也是一种有损压缩的图片,但是它的体积却要比jpg要小40%,这种格式的主要优势在于高效率和体积小。但毕竟它是一种比较少见的图片格式,所以很多时候都不支持这种图片的使用。
这时候就需要对它进行格式转化,将它转换成常用的图片格式,所以今天为大家详细介绍webp批量转换成jpg的方法,免去大家一个一个进行图片转换的烦恼,赶快来学习这个实用的办公技巧吧!
需要用到的工具软件:优速图片格式转换器
工具软件下载地址:https://download.yososoft.com/jimp/2.0.1/jimp_2.0.1.exe
详细的批量转换步骤:
步骤1,在电脑上下载“优速图片格式转换器”后安装并打开使用,点击左边列表中第一个【格式转换】功能。再点击【添加文件】按钮,将所有需要webp格式图片全部导入到软件中。
步骤2,然后设置输出格式,如下图所示格式转化右边的下拉框选择“jpg”。再设置输出目录,也就是转换成jpg图片后保存到哪个文件夹。
步骤3,然后点击右上角【开始转换】按钮启动格式批量转换,当所有图片转成jpg后软件会自动打开输出目录文件夹,就可查看图片啦。
步骤4,通过案例可以看到所有webp格式的图片全部转换成了jpg格式。
转换图片不是一件很难的事情,但如果数量较多的时候就讲究方法了,方法不好会事倍功半,浪费很多的时间。上面就是今天为大家介绍的关于“如何将webp批量转换成jpg”方法详细介绍,一定要试试看哦,肯定会让你满意的!
-
Python将图片批量从png格式转换至WebP格式
2020-12-24 00:38:45将位于/img目录下的1000张.png图片,转换成.webp格式,并存放于img_webp文件夹内。 源图片目录 目标图片目录 关于批量生成1000张图片,可以参考这篇文章:利用Python批量生成任意尺寸的图片 实现示例 import ... -
将WEBP图象文件转换为JPG格式图象
2020-04-30 02:19:39将WEBP图象文件转换为JPG格式图象,保存jpg文件移除webp文件 日期: 2020/04/30 作者: superFAN 注意: pillow 5.1版本提示:cannot identify image file ‘example.webp’ 更新pillow至7.x版本,正常工作 from PIL... -
gulpWebP:将所有jpg和png图像转换为WebP格式
2021-05-25 21:02:25将所有jpg&jpeg&png图像转换为WebP格式 安装 下载存储库并将所有文件放在一个文件夹中 在文件夹中运行此命令npm i以安装所有必需的软件包。 将图像放入src文件夹(子文件夹支持) 运行此命令npm run webp将所有... -
快速将webp格式转换成jpg
2021-11-02 16:59:45图片格式有很多种,webp就是其中的一种,webp和jpg格式一样,是一种有损压缩的图片格式,但是它的图片质量远远高于jpg格式,同样的图片webp格式要比jpg小很多。但是webp格式使用不是很多,所以大家不是很熟悉,并且... -
webp格式如何转换成为jpg
2022-03-22 15:42:12为了使用更方便,是否能将webp转成常用的JPG或PNG的方法,答案是肯定的,一起来学学吧。 这个工具就是Speedpdf,使用时直接在百度搜索speedpdf,结果中第一个就是直接点击进入即可。直接选择需要的WEBP转JPG和转... -
python实现图像 webp格式转换为jpg,bmp,tif,png等格式(已验证)
2022-04-12 11:21:14webp格式的图像如下:。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。... -
如何将webp格式转换成jpg?
2022-04-02 09:54:20webp格式转换成jpg,webp转换jpg方法。下面我就来教大家一个方法,能快速批量的将webp格式转换成jpg,感想去的就请继续往下阅读吧。 -
python 实现 webp 图片转 jpg
2022-03-09 00:21:00文件目录结构 代码 import os from PIL import Image CURRENT_PATH = "webp" ## 对应要扫描的文件夹 def convert_image(img_list): for webp in img_list: ext = os.path.splitext(webp)[1] if ext != ".webp... -
如何将照片webp免费转改成jpg格式?
2022-04-21 15:19:07首次直接在百度搜索speedpdf点击进入即可,在首页我们可以直接看到有我们需要的WEBP转JPG和转JPEG,也可以在首页所有工具下拉菜单中找到。 选择需要转换的WEBP图片添加上传后,点击进度条后面的转换字样,完成后... -
Webp格式图片文件批量转换为jpg的Python脚本
2018-09-13 10:03:35写了个Python脚本,使用PIL,实现了Webp向jpg的批量转换。(当然也可以转换为PIL支持的其他图像格式) 运行环境:Python3 + PIL 使用方法:复制下面的脚本,保存到后缀名为 .py 的文件中, 直接拖动需要转换的... -
webp图片怎么批量转换成jpg等常用格式
2021-07-06 14:33:58这个时候就需要将webp格式转换成常见的图片格式,比如jpg、png等。 该如何转换呢?这个很简单,用一个网站就解决了,网站名字叫做:webp2jpg。 使用该网站,不用上传图片文件,直接添加图片,或者将图片拖进去,就... -
webp图片文件转换工具包
2019-05-08 14:59:33WebP格式,谷歌(google)开发的一种旨在加快图片加载速度的图片格式。可转换为png图片格式 -
利用python将webp文件转化为jpg文件,将png文件修改为jpg,图像重命名
2021-01-29 08:49:08但是在神经网络中,常用的输入图像格式为jpg,所以需要转化,利用PIL库一、单张图像处理import osfrom PIL import Imagepath = "E:\\newdatas\\data\\try\\991.webp"im=Image.open(path)im.load()im.save("E:\\ne... -
PHP简单实现图片格式转换(jpg转png,gif转png等)
2021-01-03 01:19:19比如 gif转png,jpg转png 如最近使用某平台的图片文件识别,居然不支持gif格式,那么就需要将gif处理成png等。 依赖 php扩展 gd 和 exif 实现 /** * 图片格式转换 * @param string $image_path 文件路径或url *... -
webp图片文件格式转到JPG格式
2020-04-23 15:30:02另存为图片的时候就是直接webp格式,直接就是无法打开的模式,看了一下网上,也需要很多的软件去完成转换,直接换后缀名也是打不开的样子。 于是自己就尝试换一种方式。查看源代码,于是就是下面这样的样子。 ... -
webp2jpg图片格式转换
2021-03-18 19:01:09webp、svg、ico、bmp文件转化为jpeg、png、webp、webp动画、gif文件。 无需上传文件,本地即可完成转换! 无需上传,使用浏览器自身进行转换批量转换输出webp、jpeg、png、 base64、8位png(实验)、gif动图(实验)、... -
Python将webp字节流转换为jpg字节流
2020-08-05 08:07:50def change_webp_to_jpg(img_content): response_content = "" try: if img_content.upper().startswith(b"RIF"): im = Image.open(BytesIO(img_content)) if im.mode == "RGBA": im.lo... -
webp转成jpg或png的快速方法
2022-01-06 14:11:00如何将webp转成jpg或png格式呢?今天我来为大家介绍一种快速转换的方法,还能一次性批量转换,即使有一百张图片也能在一两分钟内转换完成快来和我学习吧! -
图片格式转换网站源码 支持webp转jpg在线转换源码.zip
2022-04-21 09:48:16最新图片格式转换网站源码 支持webp2jpg在线转换源码介绍 很方便实用的一套源码。 webp2jpg-免费在线图片格式转化器, 可将jpeg、jpg、png、gif、 webp、svg、ico、bmp文件转化为jpeg、png、webp、webp动画、gif文件... -
Java—将webp格式图片转为jpg或png (windows)
2021-04-21 17:34:07webp格式是谷歌研发的一种新的图片格式具有空间小效果好的优点,然而像IOS14系统以下并不支持这样的格式,所以需要我们后端来转成jpg或png格式。 方法 起初我尝试引入 webp-imageio.jar 来完成(很多文章中提到的方法... -
webp2jpg图片格式转换源码
2021-03-13 18:01:45webp2jpg-免费在线图片格式转化器, 可将jpeg、jpg、png、gif、webp、svg、ico、bmp文件转化为jpeg、png、webp、webp动画、gif文件。 无需上传文件,本地即可完成转换! 无需上传,使用浏览器自身进行转换 批量转换... -
如何将webp与JPG/PNG互转的两种方法
2021-05-26 17:35:16Webp是Google推出的一种新型图片格式,相比于 传统的PNG/JPG图片有着更小体积的优势,在Web中有着广泛的应用。由于Webp格式推出比较晚,大部分人还是更习惯于JPG、PNG以及JPEG这些图片格式。 当然不同的格式有不同的... -
怎么把照片webp格式改成jpg?
2021-04-09 13:43:08为了使用更方便,于是有特意去搜索了是否能将webp转成常用的JPG或PNG的方法,没想到还真被我找到一个在线免费转换的方法,亲测可以使用,分享给到小伙伴们吧。 这个工具叫做Speedpdf,我是通过搜索看到点击进去后又... -
如何在Mac上将WebP图像转换为JPG?
2021-05-19 09:35:15在Mac电脑上想要将WebP图像转换为JPG格式,我们该如何操作呢?我们可以使用macOS上的“预览”应用来本地转换图像文件,接下来小编给大家带来详细的图文教程,需要的朋友欢迎参考操作! 具体方法如下 1.首先,在Mac上...