LilliputDiscord 開源的圖像調(diào)整工具
Lilliput 依靠成熟的、高性能的 C 語言庫來完成解壓、調(diào)整大小和壓縮圖像的大部分工作。它的目標是盡可能少地進行內(nèi)存分配,尤其是不在 Go 中產(chǎn)生垃圾。因此,它適用于非常高吞吐量的圖像大小調(diào)整服務(wù)。
Lilliput 支持調(diào)整 JPEG、PNG、WEBP 和 GIF 動畫的大小,它還可以轉(zhuǎn)換格式。Lilliput 還對從 MOV 和 WEBM 視頻中獲取第一幀有一些支持。Lilliput 目前只支持 Mac 和 Linux。
用法
首先,import "github.com/discord/lilliput"
解碼器
Lilliput 關(guān)注內(nèi)存中的圖像,因此解碼器要求圖像數(shù)據(jù)位于 []byte 緩沖區(qū)中。
func lilliput.NewDecoder([]byte buf) (lilliput.Decoder, error)
Decoder從包含的壓縮圖像創(chuàng)建一個新對象buf。當緩沖區(qū)的 magic 字節(jié)與支持的圖像類型之一不匹配時,這將返回錯誤。
func (d lilliput.Decoder) Header() (lilliput.ImageHeader, error)
讀取并返回圖像的 header。header 包含圖像的元數(shù)據(jù)。如果圖像的 header 格式錯誤,則返回錯誤。header 格式錯誤的圖像無法解碼。
func (d lilliput.Decoder) Description() string
返回描述圖像類型的字符串,例如"JPEG"or "PNG"。
func (h lilliput.Decoder) Duration() time.Duration
返回內(nèi)容的長度。對于靜態(tài)圖像和動畫 GIF,返回 0。
func (d lilliput.Decoder) DecodeTo(f *lilliput.Framebuffer) error
完全解碼圖像并將其像素數(shù)據(jù)寫入f. 如果解碼過程失敗,則返回錯誤。如果圖像包含多個幀,則每次調(diào)用都會返回一個后續(xù)幀。當圖像不包含更多要解碼的數(shù)據(jù)時返回io.EOF。
lilliput 的用戶通常不應(yīng)該調(diào)用DecodeTo而應(yīng)該使用 ImageOps 對象。
func (d lilliput.Decoder) Close()
關(guān)閉解碼器并釋放資源,Decoder 對象在不再使用時必須有.Close()調(diào)用。
