用于 C++ 的开源更快的图像处理库
创建、操作、绘制、分割、复制和转换流行的图像格式;通过免费 C++ 库应用过滤器、划分两个图像、网格化图像。
libvips 是一个开源的高级图像处理库,它使用非常低的内存并执行非常快速的操作。该库可以轻松处理大图像并支持多种图像文件格式,例如 JPEG、TIFF、PNG、WebP、HEIC、FITS、Matlab、OpenEXR、PDF、SVG、HDR、PPM / PGM / PFM、CSV、GIF 、分析、NIfTI、DeepZoom 和 OpenSlide。它可以通过 ImageMagick 或 GraphicsMagick 轻松加载图像,从而可以使用 DICOM 等格式。
诽谤原始的应用是明智的、一些使用技术比如运行时代码生成帮助快速处理图像。 与其他图像处理图书馆相比、据指出、诽谤需要很少的AM、运行更快、特别是在有多个Cap的机器上。 这主要是因为它使用的智能结构自动分割图像工作流。
图书馆为大量的数字类型提供支持、从简单的8位到复杂的128位。 大多数图像处理库使用线程操作、但是在另一方面将线程放入系统中、并将整个图像管道的副本分配给每个线程。 这种水平线程风格更好地使用处理器缓存并减少锁定。
诽谤图书馆是一个图像处理库、提供的性能优于其他许多图书馆。 图书馆为图像处理的几个重要特点提供支持、将图像分成两个图像、复制图像、将图像复制成另一图像、绘制图像。
开始使用 libvips
使用以下命令克隆最新的源。
通过git命令安装诽谤
git clone git://github.com/libvips/libvips.git
从 git 构建需要更多的包,你至少需要 gtk-doc 和 gobject-introspection。
通过 git 命令安装 libvips 包
./autogen.sh
make
sudo make install
通过 C++ API 更快地渲染图像
诽谤图书馆为所有主导平台更快地创建和操作图像提供了功能。 一些像ImageMagick和Gt图书馆这样的主要图像处理库非常强大、为处理图像提供了先进的功能、但需要大量的内存来处理。 另一方面、诽谤几乎可以做到与ImageMagick相同的活动、但更快、并且具有较小的记忆足迹
将图像保存为其他支持的格式
开源的 libvips 库提供了一组操作,可以加载和保存各种格式的图像。该库内置支持以流行格式保存图像,如 TIFF、JPEG、PNG、Analyze、PPM、OpenEXR、CSV、Matlab、Radiance、RAW、FITS、WebP、SVG、PDF、GIF 和 VIPS。 VipsForeign 可用于以多种格式加载和保存图像。
通过C++ API读和写记忆
int
main( int argc, char **argv )
{
gchar *buf;
gsize len;
int i;
if( VIPS_INIT( argv[0] ) )
vips_error_exit( NULL );
if( argc != 2 )
vips_error_exit( "usage: %s FILENAME", argv[0] );
if( !g_file_get_contents( argv[1], &buf, &len, NULL ) )
vips_error_exit( NULL );
for( i = 0; i < 10; i++ ) {
VipsImage *image;
void *new_buf;
size_t new_len;
printf( "loop %d ...\n", i );
if( !(image = vips_image_new_from_buffer( buf, len, "",
"access", VIPS_ACCESS_SEQUENTIAL,
NULL )) )
vips_error_exit( NULL );
if( vips_image_write_to_buffer( image,
".jpg", &new_buf, &new_len,
"Q", 95,
NULL ) )
vips_error_exit( NULL );
g_object_unref( image );
g_free( new_buf );
}
g_free( buf );
vips_shutdown();
return( 0 );
}
更快地调整图像大小
开源 libvips 库使软件开发人员能够在自己的应用程序中动态调整图像大小。首先,您需要通过提供图像名称和完整地址从图像存储库加载图像。之后,您可以根据需要将其调整为指定的宽度和高度。之后,您可以使用新尺寸将其保存到您选择的位置。
通过C++ API读和写记忆
int
vips_resize( VipsImage *in, VipsImage **out,
double scale, ... )
{
va_list ap;
int result;
va_start( ap, scale );
result = vips_call_split( "resize", ap, in, out, scale );
va_end( ap );
return( result );
}
通过 C++ API 进行图像过滤
图像过滤是全球各地各种图像处理和计算机视觉应用中一个有价值的特点。 诽谤图书馆通过C++个命令为图像过滤提供完全支持。 像平滑、发生和边缘增强这样的特点是一些用过滤实现图像处理操作的例子。 图书馆还包括NG过滤器、如左、左、上、自适应、自动选择最佳邻居预测器等。 它还包括可以装载libMagick和OpenSlide的进口过滤器。