Бібліотека швидшої обробки зображень з відкритим кодом для  C++

Створювати, маніпулювати, малювати, ділити, копіювати та перетворювати популярні формати зображень; Застосовуйте фільтри, розділяйте два зображення, створюйте зображення в сітку за допомогою безкоштовної бібліотеки C++.

Libvips — це розширена бібліотека обробки зображень з відкритим кодом, яка використовує дуже мало пам’яті та виконує дуже швидкі операції. Бібліотека може легко обробляти великі зображення та підтримує пристойний діапазон форматів файлів зображень, таких як JPEG, TIFF, PNG, WebP, HEIC, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM / PGM / PFM, CSV, GIF , Analyze, NIfTI, DeepZoom і OpenSlide. Він може легко завантажувати зображення через ImageMagick або GraphicsMagick, що дозволяє працювати з такими форматами, як DICOM.

Примітиви libvips застосовано розумно, а деякі використовують такі методи, як генерація коду під час виконання, що сприяє швидкій обробці зображень. Порівняно з іншими бібліотеками обробки зображень, було зазначено, що libvips потребує мало оперативної пам’яті та працює швидше, особливо на машинах із декількома процесорами. Головним чином це пов’язано з інтелектуальною архітектурою, яка автоматично розподіляє робочі процеси зображення.

Бібліотека забезпечує підтримку величезного діапазону числових типів, від простого 8-бітного int до складного 128-бітного. Більшість бібліотек обробки зображень використовують потокові операції, але libvips, з іншого боку, розміщує потоки в системі введення-виведення зображення та призначає копію всього конвеєра зображення кожному потоку для роботи над ним. Цей стиль горизонтального потоку дозволяє краще використовувати кеш процесора та зменшує блокування.

Бібліотека libvips — це бібліотека обробки зображень, яка пропонує кращу продуктивність, ніж багато інших бібліотек. Бібліотека надала підтримку кількох важливих функцій обробки зображень, таких як малювання зображень, поділ двох зображень, малювання кола на зображенні, копіювання зображення, зафарбовування зображення в інше зображення, малювання лінії на зображенні, перетворення зображення, кешування зображення, додати два зображення, створити зображення Гауса, прочитати точку із зображення, створити сітку зображення, зберегти зображення у файлі JPEG і багато іншого.

Previous Next

Початок роботи з libvips

Клонуйте найновіші джерела за допомогою наступної команди.

Встановіть libvips за допомогою команди git

 git clone git://github.com/libvips/libvips.git 

Для збирання з git потрібно більше пакетів, вам знадобляться принаймні gtk-doc і gobject-introspection.

Встановіть пакети libvips за допомогою команди git

 ./autogen.sh
make
sudo make install 

Швидший рендеринг зображень через C++ API

Бібліотека libvips забезпечує функціональні можливості для швидшого створення зображень і обробки зображень на всіх провідних платформах. Деякі з провідних бібліотек обробки зображень, як-от бібліотеки ImageMagick і GD, є дуже потужними та надають розширені функції для роботи із зображеннями, але потребують великого обсягу пам’яті для обробки зображень. З іншого боку, libvips може виконувати фактично ті самі дії, що й 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

Фільтрування зображень є цінною функцією, яка використовується в різних програмах обробки зображень і комп’ютерного бачення по всьому світу. Бібліотека libvips забезпечує повну підтримку фільтрації зображень за допомогою команд C++. Такі функції, як згладжування, підвищення різкості та покращення країв, є деякими прикладами операцій обробки зображень, реалізованих із фільтруванням. Бібліотека також включала фільтри PNG, такі як різниця ліворуч, середнє значення ліворуч і вгору, адаптивний, автоматичний вибір найкращого прогнозу сусідів і відсутність фільтрації. Він також містить фільтри імпорту, які можна завантажувати за допомогою libMagick і OpenSlide.

 Українська