G
N
I
D
A
O
L

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

一个可以媲美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/

posted @ 2024-05-08 21:02  firespeed  阅读(486)  评论(0编辑  收藏  举报