2011-12-01 41 views
6

Có nơi nào đó bộ mã hóa và bộ giải mã WebP hoàn chỉnh tương thích với tuần hiện tại (hoặc có thể chia được) không?Bộ mã hóa/giải mã WebP trong go

Có thể so sánh tốc độ với tiêu chuẩn png không?

+0

tôi hỏi câu hỏi này trong năm 2011, đã trả lời nó bản thân mình vào năm 2012 và được chấp nhận một câu trả lời trong năm 2015. phát triển WebP sẽ không nhanh như dự kiến;) –

Trả lời

4

Có một gói bởi anh chàng này trên GitHub trong đó bao gồm cả một bộ mã hóa và giải mã cho một WebP: https://github.com/chai2010/webp

Từ các tập tin readme:

package main 

import (
    "bytes" 
    "fmt" 
    "io/ioutil" 
    "log" 

    "github.com/chai2010/webp" 
) 

func main() { 
    var buf bytes.Buffer 
    var width, height int 
    var data []byte 
    var err error 

    // Load file data 
    if data, err = ioutil.ReadFile("./testdata/1_webp_ll.webp"); err != nil { 
     log.Println(err) 
    } 

    // GetInfo 
    if width, height, _, err = webp.GetInfo(data); err != nil { 
     log.Println(err) 
    } 
    fmt.Printf("width = %d, height = %d\n", width, height) 

    // GetMetadata 
    if metadata, err := webp.GetMetadata(data, "ICCP"); err != nil { 
     fmt.Printf("Metadata: err = %v\n", err) 
    } else { 
     fmt.Printf("Metadata: %s\n", string(metadata)) 
    } 

    // Decode webp 
    m, err := webp.Decode(bytes.NewReader(data)) 
    if err != nil { 
     log.Println(err) 
    } 

    // Encode lossless webp 
    if err = webp.Encode(&buf, m, &webp.Options{Lossless: true}); err != nil { 
     log.Println(err) 
    } 
    if err = ioutil.WriteFile("output.webp", buf.Bytes(), 0666); err != nil { 
     log.Println(err) 
    } 
} 
+0

Thú vị. Liệu nó có tốt không ? –

1

Tìm thấy this, mặc dù tôi không chắc chắn nếu đó là những gì bạn muốn. Ngoài ra nó có vẻ thiếu một bộ mã hóa + nó có thể là lỗi thời wrt hiện tại Go phát hành/phiên bản hàng tuần.

+0

Tôi đã thử nó nhưng nó thiếu bộ mã hóa như bạn đã nói và nó không biên dịch hàng tuần. Tôi không hiểu tại sao nhóm Google Go dường như bỏ qua định dạng hình ảnh do Google quảng cáo. –

+1

@dystroy: Mã lỗi thời có thể có khả năng gofixable và giấy phép BSD-3 cho phép dễ dàng chia nhỏ bộ giải mã và sau đó mã hóa bộ mã hóa (có lẽ không tầm thường) - iff bạn sẽ không tìm thấy nó ở một nơi khác sẵn sàng thực hiện và bạn thực sự cần nó. Ngoài ra để hỏi tại golang-hạt có thể có giá trị một thử. – zzzz

+1

Tôi không nghĩ rằng mình có thời gian để mã hóa bộ mã hóa và thậm chí tôi không có khả năng hiểu các bộ mã hóa hiện có bằng các ngôn ngữ khác (không tạo C++ trong một thời gian dài). Có lẽ tôi sẽ hỏi golang-nut ngay cả khi một nửa danh sách gửi thư có thể đã thấy câu hỏi này ở đây :) –

0

The Go Tác giả thực sự (2014/11) thêm webp để thêm đi của họ "hình ảnh" repo (bmp/​​tiff/WebP) ở đây:

https://github.com/golang/image

EDIT: Rõ ràng là repo không chứa bất kỳ bộ mã hóa webp/dường như là trình đọc - chỉ.

(Chưa kiểm tra mã webp cho đến nay. Có lẽ rời khỏi một số chi tiết thời gian 4 thử nghiệm trước khi sử dụng trong sản xuất.)

+0

Tôi không thấy bất kỳ bộ mã hóa nào tại đây. Tôi đang thiếu gì? –

+0

@destroy: bạn hoàn toàn đúng: cũng không tìm thấy bộ mã hóa nào trong repo. – ABri

Các vấn đề liên quan