Golang.org/x库初探1——image库

     Golang有一个很有意思的官方库,叫golang.org/x,x可能是extends,experimental,总之是一些在官方库中没有,但是又很有用的库。最近花点时间把这里有用的介绍一下。

  1. Golang.org/x库初探1——image库
  2. Golang.org/x库初探2——text库

提供更多的图像格式

golang.org/x/image库整体结构如图

除了colornames,math,vector等基础库之外,最重要的一块功能是提供了更多的图像格式编解码功能,包括bmp、ccitt、tiff、vp8、vp8l、webp,我们知道官方库中只支持jpeg、png、gif,通过这些库的引入,可以扩展支持更多的图像格式,但其中只有bmp、tiff支持编码,也就是写入文件,其他几种格式仅提供了解码功能。

同时,调用image.RegisterFormat注册成为可解码库的只有bmp, tiff和webp

也就是说,只有以上三种可以通过匿名import,然后通过调用image.Decode进行类型探测并解码成功。

具体可能是因为单帧/多帧等应用场景的区别,具体的暂时没有研究。 

替代原有的Resize等第三方库

原来我们如果要做头像的上传等功能的时候,一般都要用到图像的大小变化resize功能,起初常用的库是

https://github.com/nfnt/resize

这个库搜索量很大,一搜就能出来,但是今年11月已经被作者封存了。

替代的选择就是x库中的

golang.org/x/image/draw

Draw库resize使用上的区别

除了具体函数入参有部分区别之外,和原有常用库区别不大。

插值方法

原nfnt/resize库:

draw库

  1. NearestNeighbor 

  2. ApproxBiLinear 

  3. BiLinear 

  4. CatmullRom

可见官方库在算法选择度上还是差些,幸好,插值算法就是如果你要把图像扩大,那么大图像和小图像之间缺失的部分怎么自动填充的问题,如果仅仅是头像等缩略图的需求,区别不是很大,我们常用的就是NearestNeighbor。

文字绘图时常用的font库

image下还有font库,通常用于在图像上绘制文字的应用场景。

绘制文字需要知道字体,配置大小、是否粗体等信息,font下还有opentype库用于从truetype和opentype的字体描述文件中获得字体信息,但freetype并不包含在x/image/font中,freetype的支持在GitHub - golang/freetype: The Freetype font rasterizer in the Go programming language.

但freetype也是配合x/image/font的。

下周介绍跟文字相关的text库

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百家饭OpenAPI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值