软件简介

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()调用。

 

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表了博客
2012/11/30 19:27

Linux机微型化

“大部分人可以使用更小,更便宜的电脑工作,”博主Robert Pogson说。“很显然,对于大部分功能,智能手机就是一台电脑,我们只要安上一个大的屏幕,一个键盘和打印机就可以做大的、贵的电脑能做的一切。我坚信,未来的一体机大部分功能在键盘和鼠标。 转载请注明:Linux人社区>英文资讯翻译专版.编译 英文原文: Linux in Lilliput By Katherine Noyes LinuxInsider 11/29/12 5:00 AM PT "The vast majority of us can do with...

0
0
发表了博客
2019/03/14 12:25

大端 小端和网络字节序说明

大端(Big-Endian)和小端(little-Endian)的起源 关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。 战争的原因:大家都知道,吃鸡蛋的时候,原始的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了, 因此他的父亲,就下令,命令所有的子民吃鸡蛋的时候,必须先打破鸡蛋较小的一端,违令者重...

0
0
发表了博客
2018/06/19 19:22

字节序:大端和小端(Big endian and Little endian)(转自维基百科)

简介[编辑] 在几乎所有的机器上,多字节对象都被存储为连续的字节序列。例如在C语言中,一个类型为int的变量x地址为0x100,那么其对应地址表达式&x的值为0x100。且x的四个字节将被存储在存储器的0x100, 0x101, 0x102, 0x103位置。[1] 而存储地址内的排列则有两个通用规则。一个多位的整数将按照其存储地址的最低或最高字节排列。如果最低有效位在最高有效位的前面,则称小端序;反之则称大端序。在网络应用中,字节序是一个必须...

0
1
发表了博客
2019/03/23 14:28

Markdown语法大全

Markdown语法大全 README 该文件用来测试和展示书写README的各种markdown语法。GitHub的markdown语法在标准的markdown语法基础上做了扩充,称之为GitHub Flavored Markdown。简称GFM,GFM在GitHub上有广泛应用,除了README文件外,issues和wiki均支持markdown语法。 转自 https://www.jianshu.com/p/280e2ef4069e Author:xubh E-mail:786991884@qq.com =========================== 目录 横线 标题 文本 普通文本 单行文本 多行...

0
0
发表于大前端专区
2019/09/15 22:52

你知道字节序吗

最近在调一个自定义报文的接口时,本来以为挺简单的,发现踩了好几个坑,其中一个比较“刻骨铭心”的问题就是数据的字节序问题。 ## 背景 自定义报文,调用接口,服务端报文解析失败 ![代码截图](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/2019-09-15-BigEndian.png) ## iOS 小端序 查看 iOS 设备使用的端序 ```Objective-C if (NSHostByteOrder() == NS_LittleEndian) { NSLog(@"NS_Little...

5
45
发表了博客
2018/12/27 16:40

Markdown 常用语法

README =========================== 该文件用来测试和展示书写README的各种markdown语法。GitHub的markdown语法在标准的markdown语法基础上做了扩充,称之为`GitHub Flavored Markdown`。简称`GFM`,GFM在GitHub上有广泛应用,除了README文件外,issues和wiki均支持markdown语法。 **** |Author|果冻虾仁| |---|--- |E-mail|Jelly.K.Wang@qq.com **** ## 目录 * [横线](#横线) * [标题](#标题) * [文本](#文本) * 普通文本 * ...

0
0
发表了博客
2019/08/22 17:33

详解大端模式和小端模式

详解大端模式和小端模式 一、大端模式和小端模式的起源 关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。战争的原因:大家都知道,吃鸡蛋的时候,原始的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,因此他的父亲,就下令,命令所有的子民吃鸡蛋的时候,必须先打破鸡蛋较小的一端,违...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
0 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部