libvips 一个最好用的高性能、低内存、跨平台的图片处理库

news/2024/10/3 21:27:47

一个可以媲美OpenCV的开源库,它具有高性能、低内存、跨平台、无内存泄漏的特性。

项目简介

这是用C++开发的图像处理库,支持的API超过300多个,涵盖了算术、颜色、图片转换、卷积、形态、马赛克、合并、切割等。

支持多种图像格式,包括:JPEG、JPEG2000、JPEG-XL、TIFF、PNG、WebP、HEIC、AVIF、FITS、Matlab、OpenEXR、PDF、SVG、HDR、PPM/PGM/PFM、CSV、GIF、分析、NIfTI、DeepZoom 和 OpenSlide。支持相应的图片格式直接保存,不需转换。

性能好、运行速度非常快、占用很少的内存,相对同类库,表现最优秀,性能快5倍以上。

 官方提供SDK

官方提供各种语言的SDK,包括:Ruby、Python、PHP、C#/.Net、Go、Lua、Crystal、Elixir。

 使用例子

在C#使用还是比较方便,通过Nuget先安装库。此示例加载png文件、并进行颜色转换,并以png格式保存。

using NetVips;var i = NetVips.Image.NewFromFile("E:projectTestProjectConsoleAppConsoleApp.png");var i2 = i.CMC2LCh();i2.Pngsave("E:projectTestProjectConsoleAppConsoleAppCMC2LCh.png");

 简单使用

通道分割

NetVips.Image image = NetVips.Image.NewFromFile("E:projectTestProjectConsoleAppConsoleApp.png", memory: false, access: Enums.Access.Random);NetVips.Image[] images = image.Bandsplit();foreach(var item in images){    item.Pngsave("E:projectTestProjectConsoleAppConsoleAppBandsplit"+DateTime.Now.Ticks+".png");}

 高斯滤波

NetVips.Image image = NetVips.Image.NewFromFile(imgFile, memory: false, access: Enums.Access.Random);NetVips.Image gauss = image.Gaussblur(15);i2.Pngsave(imgPath+"gauss.png");

 增强绿色通道,锐化图像

var image = Image.NewFromFile(imgFile, access: Enums.Access.Sequential);var multiply = image * new[] { 1, 2, 1 };using var mask = Image.NewFromArray(new[,]{    {-1, -1, -1},    {-1, 16, -1},    {-1, -1, -1}}, scale: 8);var convolve = multiply.Conv(mask, precision: Enums.Precision.Integer);convolve.Pngsave(imgPath + "convole.png");

 Mosaic

var i1 = Image.NewFromFile("E:\\project\\TestProject\\ConsoleApp\\ConsoleApp\\d.png");var i2 = i.CMC2LCh();i2 = i.Mosaic(i2, Enums.Direction.Horizontal, 0, 0, 10, 10);i2.Pngsave("E:\\project\\TestProject\\ConsoleApp\\ConsoleApp\\Mosaic.png");

 GitHub:https://github.com/libvips/libvips

官网:https://www.libvips.org/

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

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

相关文章

2022年最新的Asp.Net程序员学习路线图

给大家分享一个微软MVP整理的,2022年最新的Asp.Net程序员学习路线图。这个图的知识点,分为:1、个人必须掌握 2、进一步学习 3、兴趣 4、其他 5、可能需要学习。第1、2部分大家必须去掌握起来,其他的内容可以根据工作的需要、兴趣选择。 在Github已经针有人对路线图的每一个…

一个基于C#开发的、开源的特殊字符输入法

来自:编程乐趣 2024-02-18emoji表情在社交网络非常流行,我们在手机也非常方便输入,但是在PC电脑我们一般需要到归集好的网页拷贝,所以今天推荐一个Windows小工具,让你方便输入特殊字符和emoji表情。01 项目简介 这是一个基于C#开发的开源项目,方便我们通过键盘组合键、拷…

小组练习:拿出手机发朋友圈/微信群, 收集你的目标用户对你当前产品的NPS。 每个项目小组收集不少于

小组练习: 拿出手机发朋友圈/微信群, 收集你的目标用户对你当前产品的NPS。 每个项目小组收集不少于 30 条投票,截图展示 在学习通提交解答的同时,可以同步发布在团队和个人博客上,作为学习心得体会,记录下来。 我的答案: 【第二组】 NPS(Net Promoter Score)是一种用来…

python在Scikit-learn中用决策树和随机森林预测NBA获胜者

原文链接:http://tecdat.cn/?p=5222 原文出处:拓端数据部落公众号在本文中,我们将以Scikit-learn的决策树和随机森林预测NBA获胜者。美国国家篮球协会(NBA)是北美主要的男子职业篮球联赛,被广泛认为是首屈一指的男子职业篮球联赛在世界上。它有30个队(美国29个,加拿大…

【Azure Function】Azure Function中的Timer Trigger无法自动触发问题

问题描述 在Azure Function中,部署了定时触发器函数(Timer Trigger),却无法按时触发。问题解答 登录Function的Kudu站点,查看 logfiles中 application/function/host目录下的日志文件,发现错误消息:Singleton lock renewal failed for blob xxxxxxxxxxxxxxxxxxxxxxxxxxxxx…

ESP32-C6测评-环境安装

import time from machine import Pinled=Pin(15,Pin.OUT)while True:led.value(1)time.sleep(0.01)led.value(0)time.sleep(0.3)

国产持续集成工具 - Gokins

国产持续集成工具 - Gokins 持续集成(Continuous Integration ,CI) 介绍 在传统软件开发过程中,集成通常发生在每个人都完成了各自的工作之后。在项目尾声阶段,通常集成还要痛苦的花费数周或者数月的时间来完成。持续集成是一个将集成提前至开发周期的早期阶段的实践方式,…