利用 LibWebP-NET 解码与编码 WebP 格式图片
原文:利用 LibWebP-NET 解码与编码 WebP 格式图片

WebP 格式是谷歌开发并发展的一种最新的网络图片格式,具有压缩率高、解码快、免版权、开源等优点。

大部分先进的网页浏览器、图片浏览器都支持该格式,Windows用户可以通过安装 WebP Codec for Windows 在系统中查阅WebP图片。

虽然 WebP 是开源格式,但目前 .NET 平台对 WebP 的支持并不好,只能依靠第三方的类库来加载 WebP 格式。

在这里我推荐 LibWebP-NET 这个开源类库,可以在 .NET 中对 WebP 图片进行解码和编码。

LibWebP-NET 只是简单的对于WebP的C++类库的一个.NET封包,其核心代码仍在 libwebp.dll 这个动态链接库文件中,因此不支持在普通的ASP.NET空间中运行。

并且因为动态链接库对于系统的限制,因此有x86和x64两个版本的C++类库文件,应用于不同的操作系统。

我个人推荐您在.NET工程属性的编译选项中,使用x86兼容模式,这样只需要附上x86版的 libwebp.dll 文件即可。

下面的测试代码,为我修改版的 LibWebPNET 源码的类库文件,您可以 点击这里下载 。

我仅将其中快速编码和解码函数设置为静态方法(原版需要实例化相关的解码类,很繁琐)。

使用前,记得引用 Imazen.WebP.dll 类库,并将 libwebp.dll 动态链接库释放到主程序的运行目录。

解码方式非常简单

Dim bs As Byte() = IO.File.ReadAllBytes("指定的WebP图片")
Dim img As Bitmap = Imazen.WebP.SimpleDecoder.DecodeFromBytes(bs, bs.Length)

这样即可解码 WebP 图片为.NET可识别的图片对象,应用于其他各种操作。

编码方式则略微复杂

Dim pic As Image = Image.FromFile("原图片位置")' WebP只支持 Format32bppArgb 和 Format32bppRgb 两种像素格式
' 所以有时候需要改码,重绘一个图像
Using bmp As New Bitmap(pic.Width, pic.Height, Imaging.PixelFormat.Format32bppArgb)' 将图片重绘到新画布Using g As Graphics = Graphics.FromImage(bmp)g.DrawImage(pic, 0, 0, pic.Width, pic.Height)End Using' 转码并保存文件Using fs As IO.FileStream = IO.File.Create("新图片位置.webp")Imazen.WebP.SimpleEncoder.Encode(bmp, fs, 100)End UsingEnd Using

WebP 编码仅支持 Format32bppArgb 和 Format32bppRgb,而目前主流的网络图片格式并非这两种像素格式,所以我们在转换前,需要自己将图片转码。

通过 LibWebP-NET,我们可以很容易的拥抱 WebP 这种未来的网络图片格式。希望 .NET 以后也可以内置对于 WebP 的支持,而不再需要第三方的类库。

posted on 2018-06-01 16:59 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/9122478.html

利用 LibWebP-NET 解码与编码 WebP 格式图片相关推荐

  1. 使IE浏览器支持webp格式图片显示

    webp是一种图像压缩格式,由谷歌推出,开源免费.webp格式图片具有很多优势,相比于传统的png.jpg等在同等图像质量下面,它的图像占有空间更少,因此,可以广泛用于各种对存储空间要求较高的场景中, ...

  2. Ubuntu 把 webp 格式图片转换成 jpeg/png 格式

    据统计,目前互联网上传输的数据有65%都是图片,为了减少数据量.加速网络传输.谷歌(google)于2010年推出的新一代图片格式 -- WebP 格式. WebP 格式是一种旨在加快图片加载速度的图 ...

  3. Android将webp格式图片转换为png格式方法

    最近项目优化的时候发现app上选择的部分图片上传到服务器后无法显示或者直接上传失败,经过跟踪发现问题出现在webp图片格式上,说到webp格式的图片,这是google自己发明的一种图片格式,在网络上使 ...

  4. webp格式图片怎么转换成jpg?

    如何将webp格式转换成jpg格式呢?当下网路上使用比较广泛的图像格式一种就是jpg,因为它基本上不具有图像格式的权限限制,可以在任意软件和平台中进行上传.查看.下载等操作,因此当大家遇到其他因格式限 ...

  5. 通过浏览器,将webp格式图片转jpg格式

    概述 我们网络上下载的图片,很多的是webp格式的图片,而目前支持这种图片格式的软件较少,比如Windows 照片查看器,是不能直接打开图片的.安装其他专业图像软件又麻烦. 因此,本文介绍利用电脑常用 ...

  6. web前端入门学习 css(10)移动端布局(学到DPG格式图片与webp格式图片停了)

    https://www.bilibili.com/video/BV14J4114768?p=390 代码:https://gitee.com/xiaoqiang001/html_css_materia ...

  7. android webview webp,iOS WebView中使用webp格式图片的方法

    webp格式图片 webp格式图片是google推出的,相比jpg png有着巨大的优势,同样质量的图片webp格式的图片占用空间更小,在像电商这样图片比较多的App中,使用webp格式图片会很有优势 ...

  8. anywebp jpg png 转换webp格式图片 免费在线转换

    最近很多网站也开始支持webp格式的图片了,webp格式的图片简单说来,比目前常用的JPG同体积下更清晰,同清晰度下,体积更小. 最近也在找怎么才能将JPG PNG等文件转换为webp格式,今天终于找 ...

  9. java解析webp格式图片宽高;java解析webp图片转png格式

    java解析webp格式图片宽高:java解析webp图片转png格式 package 你的包名:***.***.***.***;import java.io.FileInputStream; imp ...

最新文章

  1. MySQL的登陆错误:ERROR 1049 (42000): Unknown database 'root'
  2. 基于Windows 2008 R2 Core的SQL Server 2008 R2 Cluster部署(Step by Step)
  3. vs2005sp1安装加速
  4. Webpack入门教程三
  5. 段式存储、页式存储。
  6. Android自定义ViewGroup的OnMeasure和onLayout详解
  7. 使用Boost.Compute的STL 在GPU上添加两个向量的实现
  8. LINUX内核之普通自旋锁
  9. 《网站性能监测与优化》一2.4 软件服务应用网站
  10. Pandas Series interpolate
  11. mysql异机备份脚本_mysqldump使用rsync异地全量备份数据库
  12. 小米手机android目录在哪里设置字体,[小米手机]小米手机MIUI自己制作.MTZ字体包方法 无需ROOT权限...
  13. 将心比心,我要有点骨气
  14. win7休眠设置在哪里_电脑休眠好不好,在哪里开启?
  15. 安卓的权限大全和动态使用安卓权限
  16. DO447协调滚动更新--委派任务和事实
  17. java导出Excel(POI模式 Ajax下载 Post传参) bootstrap table getVisibleColumns获取显示的列
  18. End-to-End Object Detection with Fully Convolutional Network
  19. linux忽略大小写 grep,linux grep不区分大小写查找字符串方法
  20. IntelliJ IDEA java开发环境

热门文章

  1. 分布式存储系统设计 - Gossip
  2. go + influxdb + grafana 日志监控系统
  3. ^_^直接用脚本分割日志,不用工具。
  4. MySQL与MariaDB概述 (二)
  5. 基于用户的协同过滤算法
  6. Cisco路由器IOS映像恢复及升级方法
  7. xampp mysql访问拒绝_liunx Centos7 安装xampp
  8. 敏捷宣言 敏捷原则_2018年最受欢迎的敏捷文章
  9. 哲学家就餐 linux实现_Linux哲学的9个主要原则如何影响您
  10. Bootstrap3 全局样式