提问:golang 各种图片 转 webp 代码

一秒之后......

package main

import (
"fmt"
"image"
"image/gif"
"image/jpeg"
"image/png"
"os" "github.com/chai2010/webp"
) func main() { // 读取图片文件
file, err := os.Open("test.jpg")
if err != nil {
fmt.Println(err)
} // 解码 jpg 格式图片
img, err := jpeg.Decode(file)
if err != nil {
fmt.Println(err)
} // 将图片转换为 webp 格式
err = webp.Encode(img, "test.webp", &webp.Options{Lossless: true})
if err != nil {
fmt.Println(err)
} // 关闭文件句柄
file.Close() // 以下是其他格式的转换,只需要替换 jpeg 为其他格式即可,如 png、gif 等等。 // 读取图片文件
file, err := os.Open("test.png")
if err != nil {
fmt.Println(err)
} // 解码 png 格式图片
img, err := png.Decode(file)
if err != nil {
fmt.Println(err)
} // 将图片转换为 webp 格式
err = webp.Encode(img, "test.webp", &webp.Options{Lossless: true})
if err != nil {
fmt.Println(err)
} // 关闭文件句柄
file.Close() // 读取图片文件
file, err := os.Open("test.gif")
if err != nil {
fmt.Println(err)
} // 解码 gif 格式图片,返回 image.Image 和 *gif.GIF 类型的数据,其中 image.Image 用于转换 webp 格式,*gif.GIF 用于保存动态图片的信息。
img, g, err := gif.Decode(file) // g 为 *gif.GIF 类型的数据,用于保存动态图片的信息。 if err != nil { // 如果不是动态图片,则 g 为 nil。 fmt.Println(err) } // 将图片转换为 webp 格式 if g == nil { // 静态图片直接转换 err = webp.Encode(img, "test.webp", &webp.Options{Lossless: true}) if err != nil { fmt.Println(err) } } else { // 动态图片需要使用 gif2webp 工具进行转换 err = webp.EncodeGIF(img, g, "test.webp", &webp.Options{Lossless: true}) if err != nil { fmt.Println(err) } } // 关闭文件句柄 file.Close()
}

虽然代码不能完美运行,还需要稍作修改,但思路是完全没有问题的....

被淘汰指日可待

被 AI 替代应该就在不远的将来的更多相关文章

  1. 【UXPA大赛企业专访】Mockplus:“设计替代开发”将成为现实

    “过去,是‘设计服务于开发’,现在,我认为是‘设计驱动开发’,而在不远的将来,随着AI的落地.大数据和云计算能力的提升,‘设计替代开发’将成为现实.Mockplus也正在为此部署并行动.” 近日,UX ...

  2. 普通人如何站在时代风口学好AI?这是我看过最好的答案

    摘要:当前,数据.算法.算力的发展突破正推动AI应用的逐步落地. AI是什么? 根据维基百科的定义,人工智能是一种新的通用目的技术(GPT, General Purpose Technology),它 ...

  3. 微软AI发布会,集齐六大亮点召唤黑科技!

    7月12日,微软合作伙伴大会Inspire在华盛顿特区如火如荼地举行.同一天,在相隔5个时区的伦敦,微软还举办了一场关于人工智能的发布会.这是一场智能技术和情感体验两相交融的科技盛宴,既有黑科技,也有 ...

  4. 智慧金融时代,大数据和AI如何为业务赋能

    前言:宜信技术人物专访是宜信技术学院推出的系列性专题,我们邀请软件研发行业的优秀技术人,分享自己在软件研发领域的实践经验和前瞻性观点. 第一期专访我们邀请到宜信科技中心AI中台负责人王东老师,从大数据 ...

  5. 从《华为的冬天》到AI的冬天 | 甲子光年

    知难不难,惶者生存. 作者 | DougLong 编辑 | 火柴Q.甲小姐 *本文为甲子光年专栏作家DougLong独家稿件.作者为AI从业者.Gary Marcus<Rebooting AI& ...

  6. zz2017-2018年AI技术前沿进展与趋势

    2017年AI技术前沿进展与趋势 人工智能最近三年发展得如火如荼,学术界.工业界.投资界各方一起发力,硬件.算法与数据共同发展,不仅仅是大型互联网公司,包括大量创业公司以及传统行业的公司都开始涉足人工 ...

  7. 英特尔® 至强® 平台集成 AI 加速构建数据中心智慧网络

    英特尔 至强 平台集成 AI 加速构建数据中心智慧网络 SNA 通过 AI 方法来实时感知网络状态,基于网络数据分析来实现自动化部署和风险预测,从而让企业网络能更智能.更高效地为最终用户业务提供支撑. ...

  8. AI实战分享 | 基于CANN的辅助驾驶应用案例

    摘要:什么是辅助驾驶?简而言之,就是借助汽车对周围环境的自动感知和分析,让驾驶员预先察觉可能发生的危险,有效增加汽车驾驶的舒适性和安全性. 导读:基于昇腾AI异构计算架构CANN的辅助驾驶AI应用实战 ...

  9. 盘它!基于CANN的辅助驾驶AI实战案例,轻松搞定车辆检测和车距计算!

    摘要:基于昇腾AI异构计算架构CANN(Compute Architecture for Neural Networks)的简易版辅助驾驶AI应用,具备车辆检测.车距计算等基本功能,作为辅助驾驶入门级 ...

  10. 博客与AI

    最近AI自动生成技术文章和答案在圈子里面引起了很大轰动,Stack Overflow暂时拒绝接收GPT生成的结果.我也经常性地浏览或者编写博客,但是最近我使用new bing或者ChatGPT的过程中 ...

随机推荐

  1. [转帖]ipset命令介绍与基本使用

    一. 介绍 ipset命令是用于管理内核中IP sets模块的,如iptables之于netfilter.ipset字面意思是一些IP地址组成一个集合(set).但是ipset用于用于存储IP地址,整 ...

  2. [转帖]2.6 The jcmd Utility

    https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr006.html#BABEJDGE The j ...

  3. 在线获取所有依赖rpm包的方法

    背景 现在经常有一些不能上网的LInux机器但是需要安装一些软件. 但是有时候经常因为有依赖关系找不到的情况比较麻烦. 或者是一些公司的网络总是受限,网络速度非常慢. 下载安装非常折磨人. 这个时候就 ...

  4. 【0基础学爬虫】爬虫基础之自动化工具 Pyppeteer 的使用

    大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶.逆向相关文章,为实现从易到难全方位覆盖,特设[0基础学爬 ...

  5. 【Java 进阶】详细探究 Spring 框架中的注解与反射

    [进阶]Spring中的注解与反射 目录 [进阶]Spring中的注解与反射 前言 一.内置(常用)注解 1.1@Overrode 1.2@RequestMapping 1.3@RequestBody ...

  6. 月薪10K码农,跳槽到40K架构师,技术学习路线图汇总

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.介绍 Hey there! Roadmap to becoming a web devel ...

  7. .net ELk 成功使用

    原文地址: http://t.zoukankan.com/shousiji-p-15222276.html

  8. 苹果iOS的应用移除主屏幕及恢复找回

    昨天刷到一个苹果iOS系统更换微信图标的,然后就添加了一个,发现那个记录通知数字问题,想恢复回来,所以就有了此文. https://www.cnblogs.com/lzhdim/p/17909867. ...

  9. 国产数据库TiDB初体验:简单易用,快速上手

    最近开始关注国产数据库的发展,为了能从技术人员的角度来实际体验国产中目前最流行的TiDB数据库,从今天起,在官方公布的课程开始正面了解TiDB的设计理念. 看了2小时的入门课程介绍,总体来说,还是有不 ...

  10. ArrayList中的遍历删除

    ArrayList 中的遍历删除 在代码编写过程中经常会遇到这样的要求:遍历一个线性表,要求只遍历一遍(时间复杂度\(O(n)\)),删除符合指定条件的元素,且要求空间复杂度 \(O(1)\). 例如 ...