1. منتجات
  2.   صورة
  3.   C++
  4.   libvips
 
  

مكتبة معالجة أسرع للصور مفتوحة المصدر لـ 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 تحتاج إلى ذاكرة وصول عشوائي صغيرة وتعمل بشكل أسرع ، خاصة على الأجهزة التي تحتوي على وحدات معالجة مركزية متعددة. ويرجع ذلك أساسًا إلى البنية الذكية التي تستخدمها والتي تقسم تلقائيًا سير عمل الصورة.

توفر المكتبة دعمًا لمجموعة كبيرة من الأنواع الرقمية ، بدءًا من 8 بت البسيطة إلى 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 ++

توفر مكتبة 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.

 عربي