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

news2025/1/16 21:18:07

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

  1. Image库

提供更多的图像格式

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库:

  • NearestNeighbor: Nearest-neighbor interpolation
  • Bilinear: Bilinear interpolation
  • Bicubic: Bicubic interpolation
  • MitchellNetravali: Mitchell-Netravali interpolation
  • Lanczos2: Lanczos resampling with a=2
  • Lanczos3: Lanczos resampling with a=3

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库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/145086.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux 网络驱动

1. linux 里面驱动三巨头:字符设备驱动、块设备驱动、网络设备驱动。2.嵌入式网络硬件分为两部分: MAC 和 PHY。如果一款芯片数据手册说自己支持网络,一般都是说的这款 SOC 内置 MAC, MAC 类似 I2C 控制器、SPI 控制器一样的外设。…

Java三大技术平台是什么?

为了使软件开发人员、服务提供商和设备生产商可以针对特定的市场进行开发,SUN公司将Java划分为三个技术平台,它们分别是 JavaSE、 JavaEE和 JavaME。Java SE( Java Platform Standard Edition)标准版,是为开发普通桌面和商务应用程序提供的解…

零宽断言正则表达式替换方案

一、背景 safari浏览器不支持零宽断言正则表达式 二、解决方案 使用其他正则替换零宽断言正则&#xff08;包含&#xff1a;(?<)正向肯定预查、(?<!)正向否定预查、(?)反向肯定预查、(?!)反向否定预查&#xff09; 三、涉及场景 1、仅校验&#xff0c;不取值 如表…

首汽约车驶向极速统一之路!出行平台如何基于StarRocks构建实时数仓?

作者&#xff1a;王满&#xff0c;高级数据架构工程师首汽约车&#xff08;以下简称 “首约”&#xff09;是首汽集团为响应交通运输部号召&#xff0c;积极拥抱互联网&#xff0c;推动传统出租车行业转型升级&#xff0c;加强建设交通强国而打造的网约车出行平台。 在用车服务…

KernelSU: 内核 ROOT 方案, KernelSU KernelSU KernelSU 新的隐藏root防止检测 封号方案

大约一年多以前&#xff0c;我在一篇讲Android 上 ROOT 的过去、现在和未来https://mp.weixin.qq.com/s?__bizMjM5Njg5ODU2NA&mid2257499009&idx1&sn3cfce1ea7deb6e0e4f2ac170cffd7cc1&scene21#wechat_redirect 的文章中提到&#xff1a; 我认为&#xff0c;随…

三菱FX5U 多个表格运行指令 DRVTBL

简述该指令可以用GX Works3预先在表格数据中设定的控制方式的动作&#xff0c;&#xff08;连续或步进&#xff09; 执行多行。 本文演示了步进执行多行。指令解释2.1梯形图中的指令第一个参数&#xff1a;输出脉冲的轴编号 &#xff0c;K1,K2,K3,K4... 第二个参数&#xff1a;…

ESP8266 Windows开发环境搭建(IDE1.5)好用不骗人

最近一个项目需要用ESP8266&#xff0c;找了很多文章进行环境搭建编译都很问题&#xff0c;不是make Menuconfig 不出来&#xff0c;就是编译报错&#xff0c;现总结如下。 我在自己电脑上没弄出来&#xff0c;就安装了一个虚拟机很干净的环境没有其它开发环境影响。 提前去官…

逆向入门|全国建筑市场监管公共服务平台JS逆向

看了志远的公开课&#xff0c;自己做一下练手。 全国建筑市场监管公共服务平台&#xff08;四库一平台&#xff09; 先点到 数据这里打开f12看一眼 第一个就是 https://jzsc.mohurd.gov.cn/api/webApi/dataservice/query/comp/list?pg1&pgsz15&total450 取这个地址…

线段树讲解

0、引入 假设给定一个长度为 1001 的数组&#xff0c;即下标 0 到 1000。 现在需要完成 3 个功能&#xff1a; add(1, 200, 6); //给下标 1 到 200 的每个数都加 6&#xff1b; update(7, 375, 4); //下标 7 到 375 的数全部修改为 4 query(3, 999); //下标 3 到 999 所有数…

深入理解如何利用PWM驱动舵机:ESP32驱动DS1115舵机

深入理解如何利用PWM驱动舵机&#xff1a;ESP32驱动DS1115舵机DS1115舵机技术规格举例说明之前做了一个项目&#xff0c;关于ESP32驱动DS1115舵机&#xff0c;但是在项目运行的过程中由于学艺不精&#xff0c;导致电机抽搐 &#x1f635;‍&#x1f4ab;&#xff0c;所以特意拜…

声纹识别可靠评测

分享嘉宾 | 李蓝天 文稿整理 | William 1 Introduction 声纹识别的发展&#xff0c;非常迅猛&#xff0c;在一些基准上取得了不错的效果&#xff0c;但如果将其部署到一个实际的应用系统里面&#xff0c; 从应用方的反馈来看&#xff0c;纹识别在很多场景里的鲁棒性并不理想。…

聚观早报 | 亚马逊将裁员17000人;苹果砍单MacBook等产品线架构

今日要闻&#xff1a;亚马逊将裁员17000人&#xff1b;苹果砍单MacBook等产品线&#xff1b;京东科技调整组织架构&#xff1b;小米x徕卡团队获技术大奖&#xff1b;必应搜索或将纳入ChatGPT亚马逊将裁员17000人 1 月 5 日消息&#xff0c;知情人士称&#xff0c;亚马逊新一轮裁…

正版授权|FastStone Capture 专业屏幕截图录屏工具软件 商业版,支持商业用途。

现在截图对每个人来说都是一个必不可少的功能。QQ软件截图、360游览器截图等都是相对简单快速的途径。但是如果你对截图有更多的要求&#xff0c;那么这里推荐一款截图软件&#xff0c;它就是FastStone Capture。这个对于商城老用户来说&#xff0c;几乎是接近人手一份。强大的…

【VUE3】保姆级基础讲解(六)Axios库

目录 Axios介绍与原生的差异 发送常见的请求和配置选项 1、发送request请求 baseURL &#xff1a; 2、发送get请求 3、发送post请求 axios.all Axios创建新的实例 请求和响应拦截 请求拦截 响应拦截 Axios介绍与原生的差异 Axios其实就是一个网络请求库 与原生的差异&…

勇夺中国市场豪华品牌第一名后,特斯拉S3XY全系售价调整

比你优秀的人比你更努力&#xff0c;用这句话形容特斯拉最贴切不过。 刚刚过去的2022年&#xff0c;特斯拉在海内外市场交出了亮眼答卷&#xff1a;全球共计交付产品超131万辆&#xff0c;同比增长40%&#xff1b;乘联会给出的数据显示&#xff0c;上海超级工厂全年交付71.1万辆…

不止IVAS,微软Azure也在布局这些军事模拟场景

一提起微软在军事领域的应用&#xff0c;我们第一印象可能是美军以220亿美元采购HoloLens 2 AR头显的项目&#xff0c;这个项目后期由于AR光学和设计方面受限&#xff0c;正式应用的日期一直再推迟。实际上&#xff0c;微软除了向美军提供HoloLens外&#xff0c;还提供了基于云…

Unity 3D GUI 简介||OnGUI Button 控件

游戏开发过程中&#xff0c;开发人员往往会通过制作大量的图形用户界面&#xff08; Graphical User Interface&#xff0c;GUI &#xff09;来增强游戏与玩家的交互性。 Unity 3D 中的图形系统分为 OnGUI、NGUI、UGUI等&#xff0c;这些类型的图形系统内容十分丰富&#xff0…

第05章 数组、排序和查找

数组 基本介绍 数组可以存放多个同一类型的数据&#xff0c;数组也是一种数据类型&#xff0c;是引用类型。 即&#xff1a;数组就是一组数据。 数组的使用 1、数组的定义 方法一&#xff1a; 数据类型[] 数组名 new 数据类型[大小] 说明&#xff1a;int[] a new int[5…

【C++ Primer】阅读笔记(5):vector|迭代器|数组

目录 简介参考结语简介 Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金,有幸在竞赛中拿过一些国奖、省奖…已保研 学习经验:…

数图互通高校房产管理——CAD图形管理

数图互通房产管理系统在这方面做得比较全面&#xff1b; 支持通过建筑物的楼层CAD图查看房间属性和使用信息&#xff0c;实现图数结合、以图管房、图数互查、数图互通、图文一体化。 1.1支持客户端和AutoCAD无缝集成 支持客户端和AutoCAD无缝集成&#xff0c;实现在客户端/Aut…