V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
lixyz
V2EX  ›  问与答

RMB 求助 Java 支持 WEBP

  •  
  •   lixyz · 2022-10-05 12:16:24 +08:00 · 2483 次点击
    这是一个创建于 767 天前的主题,其中的信息可能已经有所发展或是发生改变。

    实在是折腾不动了,基本上百度谷歌上关于 Java 支持 webp 转换的文章全看过了,各个版本的 jar 包全试过了,自己编译也试过了,还是无效。

    遇到的问题包括但不限于:NoSuchElementException 、找不到动态库。。。

    现求助有过成功经验的兄弟,能否伸出援手。

    需求:Springboot 项目,部署在 Centos 7 64 上,要求可以将上传的图片( jpg/png )转换为 webp 格式。

    成功之后,支付宝 100 元,不知道有没有成功经验的兄弟。

    实在没辙了,希望大家不要嫌少

    cbdyzj
        1
    cbdyzj  
       2022-10-05 12:32:30 +08:00 via Android
    这个我弄过,不过在外面自驾游,下午空了给你写个 demo
    lixyz
        2
    lixyz  
    OP
       2022-10-05 12:36:49 +08:00
    @cbdyzj 感谢感谢,静候 demo ,国庆假期全折腾这个了,实在是折腾不动了
    suyabgaran
        3
    suyabgaran  
       2022-10-05 12:44:40 +08:00
    我弄了个 demo ,能用
    suyabgaran
        4
    suyabgaran  
       2022-10-05 12:47:51 +08:00
    lixyz
        5
    lixyz  
    OP
       2022-10-05 13:13:14 +08:00
    @suyabgaran
    提示
    java: 读取 D:\maven-repo\org\sejda\imageio\webp-imageio\0.1.6\webp-imageio-0.1.6.jar 时出错; error in opening zip file
    lixyz
        6
    lixyz  
    OP
       2022-10-05 13:14:17 +08:00
    @suyabgaran 在 pom 文件中添加正常,在转换格式的时候提示上面那个错误。
    suyabgaran
        7
    suyabgaran  
       2022-10-05 13:23:05 +08:00
    @lixyz 试试? mvn -U clean install
    int0x03
        8
    int0x03  
       2022-10-05 13:25:37 +08:00
    读 jar 出错, 有时候是 jar 包损坏, 可以删除 这个文件夹: D:\maven-repo\org\sejda\imageio\ 然后重新 mvn clean install 再试试
    ysc3839
        9
    ysc3839  
       2022-10-05 13:57:30 +08:00 via Android
    ImageMagick 不行吗?
    JohnBull
        10
    JohnBull  
       2022-10-05 14:47:01 +08:00
    @ysc3839 对呀,Runtime.getRuntime().exec() 调用 convert
    Bingchunmoli
        11
    Bingchunmoli  
       2022-10-05 15:23:06 +08:00 via Android
    本地 jar 包写过,当时只会终端输入输出写的
    lixyz
        12
    lixyz  
    OP
       2022-10-05 16:18:21 +08:00
    @suyabgaran @int0x03 都试过了,问题依旧,我怀疑是我 JDK 版本的问题?我用到是 1.8

    @ysc3839 ImageMagick 之前考虑过,但是对于是否转换成功不太好获取,就放弃了
    ysc3839
        13
    ysc3839  
       2022-10-05 16:21:09 +08:00 via Android
    @lixyz ImageMagick 不仅仅有命令行工具,还有 C 语言库可以使用。
    cbdyzj
        14
    cbdyzj  
       2022-10-05 19:02:12 +08:00
    @lixyz demo 写好了 x86_64 的系统可以正常工作
    https://github.com/alchemy-works/to-webp
    sutra
        15
    sutra  
       2022-10-05 19:33:33 +08:00
    > suyabgaran 6 小时 37 分钟前
    > https://github.com/eGluZl/image2webp @lixyz
    > @suyabgaran

    这个代码是可以在 Java 1.8 下工作的,把 java.version 改成 1.8 ,var 改成具体的类型就可以了。
    maowu
        16
    maowu  
       2022-10-05 20:12:21 +08:00 via Android
    楼主用的是 webp-imageio 这个库吗?
    lixyz
        17
    lixyz  
    OP
       2022-10-05 22:26:20 +08:00
    @suyabgaran @cbdyzj 你俩用的是一个库,我刚把所有 jar 包清空了,重新构建了,不成功啊
    lixyz
        18
    lixyz  
    OP
       2022-10-05 22:27:15 +08:00
    @maowu webp-imageio 和 webp-imageio-core 都试过了
    lixyz
        19
    lixyz  
    OP
       2022-10-05 22:40:13 +08:00
    @suyabgaran @cbdyzj Windows 10 成功转换了,但是在 Centos 7 上不成功,我就是打包成 war 然后部署到服务器上啊。。。
    suyabgaran
        20
    suyabgaran  
       2022-10-05 22:55:33 +08:00
    @lixyz 报什么错?
    lixyz
        21
    lixyz  
    OP
       2022-10-05 23:47:05 +08:00
    @suyabgaran 按照您代码中的转换方法,没有任何报错,只是 ImageIO.write 方法返回 false 。

    按照 github 上另一个创建 ImageWriter 和 WebPWriteParam 来转换,会提示找不到 WebPWriteParam 类。

    然后我又注意到一点,在右侧“外部库”中,webp-imageio 包没有办法像其他 jar 包一样可以展开。

    但在 win10 系统上是正常的
    lixyz
        22
    lixyz  
    OP
       2022-10-05 23:49:07 +08:00
    https://github.com/liguobing/pic/blob/master/sp221005_234607.png?raw=true

    像图片中一样,webp-imageio 无法像上一个 native-lib-loader 一样展开,是不是这里有什么问题?
    lixyz
        23
    lixyz  
    OP
       2022-10-05 23:50:43 +08:00
    @suyabgaran
    我刚才的描述可能有歧义
    在 win10 上,用您代码中默认的方式可以转换成功,但是在 centos7 上 ImageIO.write 方法返回 false 。

    同样在 win10 上,使用 github 上提供的另一个创建 ImageWriter 和 WebPWriteParam 来转换,会提示找不到 WebPWriteParam 类。
    cbdyzj
        24
    cbdyzj  
       2022-10-06 08:50:27 +08:00 via Android
    @lixyz 你看一下你的 CentOS 机器是什么 CPU 的
    cbdyzj
        25
    cbdyzj  
       2022-10-06 08:52:28 +08:00 via Android
    这个库无法在 arm64 的平台工作
    lixyz
        26
    lixyz  
    OP
       2022-10-06 10:54:34 +08:00
    @cbdyzj cpu 是 Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz 腾讯云上的轻虚拟机
    cbdyzj
        27
    cbdyzj  
       2022-10-06 11:03:03 +08:00
    可以+我 ID ,我下午空的,有意可以 Zoom 一下
    lixyz
        28
    lixyz  
    OP
       2022-10-06 11:06:18 +08:00
    @cbdyzj 有其他方式么?我这儿注册不了 zoom
    cbdyzj
        29
    cbdyzj  
       2022-10-06 11:09:55 +08:00
    我的 V 站 ID 就绿色软件,+一下
    lixyz
        30
    lixyz  
    OP
       2022-10-06 11:12:34 +08:00
    @cbdyzj 已加,您方便时候通过一下
    narmgalaxy
        31
    narmgalaxy  
       2022-10-06 14:23:17 +08:00
    啊这,谷歌 有转换工具,,直接在命令行调用, https://developers.google.com/speed/webp
    narmgalaxy
        32
    narmgalaxy  
       2022-10-06 14:24:12 +08:00
    ffmpeg 也可以做转换
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2755 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:37 · PVG 19:37 · LAX 03:37 · JFK 06:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.