写点什么

net.coobird.thumbnailator.tasks.UnsupportedFormatException: No suitable ImageReader found for source data.

用户头像
wjchenge
关注
发布于: 2021 年 03 月 13 日
net.coobird.thumbnailator.tasks.UnsupportedFormatException: No suitable ImageReader found for source data.

背景

使用 thumbnailator 生成 svg 类型图片的缩略图。

环境


thumbnailator 版本:0.4.13

原始图片类型:svg


错误信息


net.coobird.thumbnailator.tasks.UnsupportedFormatException: No suitable ImageReader found for source data.        at net.coobird.thumbnailator.tasks.io.InputStreamImageSource.read(Unknown Source) ~[thumbnailator-0.4.13.jar:0.4.13]        at net.coobird.thumbnailator.tasks.SourceSinkThumbnailTask.read(Unknown Source) ~[thumbnailator-0.4.13.jar:0.4.13]        at net.coobird.thumbnailator.Thumbnailator.createThumbnail(Unknown Source) ~[thumbnailator-0.4.13.jar:0.4.13]        at net.coobird.thumbnailator.Thumbnails$Builder.toFile(Unknown Source) ~[thumbnailator-0.4.13.jar:0.4.13]
复制代码

官方解释

在 GitHub 的 Issues 的栏目下查询到相同的问题:SVG not supported #75

官方回答截取如下:

Thumbnailator relies on the Java Image I/O API to handle input/output of image files.
As such, it is outside the scope of the Thumbnailator project to provide support for specific image formats.
That said, since Thumbnailator relies on the Image I/O API, if you use a library like TwelveMonkeys ImageIO (https://github.com/haraldk/TwelveMonkeys) which provides support for additional image formats, you should be able to use formats which are not supported by the stock Java distribution.
The TwelveMonkeys ImageIO library lists SVG as one of the supported input formats.
复制代码

推荐使用TwelveMonkeys ,支持的图片格式如下显示第一个就是我们需要的 svg 格式,深入查看发现要想支持 svg 还必须引入 Batik 相关的依赖,而且只支持 svg 格式的读入不支持生成 svg 格式的图片


引入第三方类库


Gradle

implementation group: 'com.twelvemonkeys.imageio', name: 'imageio-batik', version: '3.6.4'implementation group: 'org.apache.xmlgraphics', name: 'batik-transcoder', version: '1.14'
复制代码


Maven

<dependency>    <groupId>com.twelvemonkeys.imageio</groupId>    <artifactId>imageio-batik</artifactId>    <version>3.6.4</version></dependency>
<dependency> <groupId>org.apache.xmlgraphics</groupId> <artifactId>batik-transcoder</artifactId> <version>1.14</version></dependency>
复制代码


业务代码修改

由于不支持 svg 格式图片的写入操作,所以对于 svg 格式的图片缩放操作需要将缩放后的图片保存为其他格式的图片。比如判断 svg 后缀的图片特殊处理,将 thumbnailator 缩放后的图片格式保存为 jpg 类型的图片。

用户头像

wjchenge

关注

还未添加个人签名 2018.07.27 加入

还未添加个人简介

评论

发布
暂无评论
net.coobird.thumbnailator.tasks.UnsupportedFormatException: No suitable ImageReader found for source data.