ספריית קוד פתוח מהיר יותר לעיבוד תמונות עבור 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.

הפרימיטיבים של libvips מיושמים בצורה מושכלת וחלק מהמשתמשים בטכניקות כמו יצירת קוד בזמן ריצה עוזרים לעיבוד מהיר של תמונות. בהשוואה לספריות עיבוד תמונה אחרות, צוין ש-libvips זקוקים למעט זיכרון RAM ופועלים מהר יותר, במיוחד במכונות עם מספר מעבדים. זה בעיקר בגלל הארכיטקטורה החכמה שבה הוא משתמש שמחלקה אוטומטית את זרימות העבודה של התמונה.

הספרייה מספקת תמיכה במגוון עצום של סוגים מספריים, החל מ-8 סיביות פשוטות ועד ל-128 סיביות מורכבות. רוב ספריות עיבוד התמונות משתמשות בפעולות שרשור אך libvips מצד שני מכניסות את השרשור למערכת ה-IO של התמונה ומקצות עותק של כל צינור התמונה לכל שרשור לעבודה עליו. סגנון השחלה אופקי זה מנצל טוב יותר את מטמוני המעבד ומפחית את הנעילה.

ספריית 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 

עיבוד תמונות מהיר יותר באמצעות API של C++

ספריית 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.

 עִברִית