美文网首页
webp图片格式在java下的支持

webp图片格式在java下的支持

作者: 半瓶水monster | 来源:发表于2018-01-21 12:54 被阅读0次

    webp是Google公司旨在统一图片格式标准,结束gif, png, jpg 3分天下格局的一种图片格式。图片的大小要比其他格式的要更小,亲测png转化后可以节省80%。在图片比较多的场景下,统一用webp可以极大的节省流量和访问速度,收益可观。目前 js, php都有很好的库加以支持,但是在java中,imageio库目前还是不支持,需要我们自己去编译动态链接库和jar包。

    PHP下支持

    php最新的gd库已经支持webp的转化了,转化比较简单。但是存在一个小bug, 图片的大小为奇数时候,需要手动padding \0 到文件末尾。

    $created = imagewebp(imagecreatefrompng($originImageUrl), targetFile);
    if (1 == filesize(targetFile) % 2) {
          file_put_contents(targetFile, "\0", FILE_APPEND);
    }
    

    Java下支持

    1. webp-imageio
      开源库 下载压缩包到本地进行编译jar,工程用gradle来维护。

    2. libwebp
      google-developer下载压缩包到本地编译动态链接库-不同平台的动态链接库编译出来是不同的。mac下是.dylib, windowns下是.dll, unix/linux下是.so. 我在mac和linux下编译过,记录下linux下编译过程。

    3. compiling

    libwebp-0.6.1.tar.gz luciad-webp-imageio-8f9b44b41902.zip
    
    tar -xzvf libwebp-0.6.1.tar.gz
    unzip luciad-webp-imageio-8f9b44b41902.zip
    mv libwebp-0.6.1 ./luciad-webp-imageio-8f9b44b41902/libwebp
    
    
    cd luciad-webp-imageio-8f9b44b41902
    cmake .
    cmake --build .
    

    cmake如果装的话,请自行下载安装官网 安装用法

    ./gradlew build -x test
    
    1. java project
      将libwebp-imageio.so放入工程的当前目录,因为默认的java.library.path含工程当前路径。同时引入打好的luciad-webp-imageio-8f9b44b41902-0.6.0-SNAPSHOT.jar引入工程中。如果是maven工程的话,可以把jar先推到远程的仓库里。
    • java transfer
    image = ImageIO.read(new URL(imageUrl));
    // Encode it as webp using default settings
    boolean result = ImageIO.write(image, "webp", bos);
    
    • gradle push to repositry
      update build.gradle
    apply plugin: "maven-publish" //插件required
    group = "com.luciad.imageio.webp"
    
    publishing {
        publications {
            mavenJava(MavenPublication) {
               from components.java
            }
        }
        repositories {
            maven {
                 url "http://***"
                 credentials {
                          username = ****
                          password = ****
                }
          }
       }
    }
    

    publish

    gradle publishMavenPublicationToMavenRepository
    

    相关文章

      网友评论

          本文标题:webp图片格式在java下的支持

          本文链接:https://www.haomeiwen.com/subject/gwefaxtx.html