LilliputDiscord 开源的图像调整工具

联合创作 · 2023-09-29 23:01

Lilliput 依靠成熟的、高性能的 C 语言库来完成解压、调整大小和压缩图像的大部分工作。它的目标是尽可能少地进行内存分配,尤其是不在 Go 中产生垃圾。因此,它适用于非常高吞吐量的图像大小调整服务。

Lilliput 支持调整 JPEG、PNG、WEBP 和 GIF 动画的大小,它还可以转换格式。Lilliput 还对从 MOV 和 WEBM 视频中获取第一帧有一些支持。Lilliput 目前只支持 Mac 和 Linux。

用法

首先,import "github.com/discord/lilliput"

解码器

Lilliput 关注内存中的图像,因此解码器要求图像数据位于 []byte 缓冲区中。

func lilliput.NewDecoder([]byte buf) (lilliput.Decoder, error)

Decoder从包含的压缩图像创建一个新对象buf。当缓冲区的 magic 字节与支持的图像类型之一不匹配时,这将返回错误。

func (d lilliput.Decoder) Header() (lilliput.ImageHeader, error)

读取并返回图像的 headerheader 包含图像的元数据。如果图像的 header 格式错误,则返回错误。header 格式错误的图像无法解码。

func (d lilliput.Decoder) Description() string

返回描述图像类型的字符串,例如"JPEG"or "PNG"

func (h lilliput.Decoder) Duration() time.Duration

返回内容的长度。对于静态图像和动画 GIF,返回 0。

func (d lilliput.Decoder) DecodeTo(f *lilliput.Framebuffer) error

完全解码图像并将其像素数据写入f. 如果解码过程失败,则返回错误。如果图像包含多个帧,则每次调用都会返回一个后续帧。当图像不包含更多要解码的数据时返回io.EOF

lilliput 的用户通常不应该调用DecodeTo而应该使用 ImageOps 对象。

func (d lilliput.Decoder) Close()

关闭解码器并释放资源,Decoder 对象在不再使用时必须有.Close()调用。

 

浏览 7
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报