Go: перекодировка WebP

В последнее я стал достаточно часто сталкиваться с формат изображений WebP (с потерями и без потерь качества), который был предложен компанией Google в 2010 году. В настоящее время просмотр изображений в формате WebP поддерживается всеми популярными браузерами (MIME-тип image/webp). WebP использует контейнер RIFF. Он базируется на алгоритме сжатия неподвижных изображений (ключевых кадров), применяемом в видеокодеке VP8.

Для работы с данным форматом существуют открытые библиотека (libvpx) и конвертер (webpconv). Для перекодирования из WebP в PNG можно воспользоваться следующим кодом на Go:

package main

import (
    "image/png"
    "os"

    "golang.org/x/image/webp"
)

func main() {

    in, err := os.Open("in.webp") 
    if err != nil {
        panic(err)
    }
    defer in.Close()

    img, err := webp.Decode(in)
    if err != nil {
        panic(err)
    }

    out, err := os.Create("out.png")
    if err != nil {
       panic(err)
    }
    defer out.Close()

    err = png.Encode(out, img)
    if err != nil {
        panic(err)
    }
}

По аналогии можно перекодировать в JPEG и другие форматы.

 

28.12.2018









 
архив

подписка