C++ üçün Açıq Mənbəli Daha Sürətli Şəkil Emalı Kitabxanası
Populyar Şəkil Formatlarını Yaradın, Manipulyasiya edin, Çəkin, Bölün, Kopyalayın və Çevirin; Pulsuz C++ Kitabxanası vasitəsilə filtrlər tətbiq edin, iki şəkli bölün, şəkli grid edin.
Libvips, çox az yaddaş istifadə edən və çox sürətli əməliyyatları yerinə yetirən açıq mənbəli qabaqcıl təsvir emalı kitabxanasıdır. Kitabxana böyük şəkilləri asanlıqla idarə edə bilir və JPEG, TIFF, PNG, WebP, HEIC, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM / PGM / PFM, CSV, GIF kimi layiqli şəkil faylı formatlarını dəstəkləyir. , Analiz et, NIfTI, DeepZoom və OpenSlide. O, DICOM kimi formatlarla işləməyə imkan verən ImageMagick və ya GraphicsMagick vasitəsilə şəkilləri asanlıqla yükləyə bilir.
Libvips primitivləri həssas şəkildə tətbiq olunur və işləmə zamanı kodu yaratmaq kimi bəzi istifadə üsulları şəkillərin sürətli işlənməsinə kömək edir. Digər təsvir emalı kitabxanaları ilə müqayisədə qeyd olundu ki, libvip-lərin kiçik RAM-a ehtiyacı var və xüsusilə çox CPU-lu maşınlarda daha sürətli işləyir. Bu, əsasən, təsvir iş axınlarını avtomatik bölən istifadə etdiyi ağıllı arxitekturaya görədir.
Kitabxana sadə 8-bit int-dən mürəkkəb 128-bitə qədər çox sayda rəqəmsal növə dəstək verir. Şəkil emalı kitabxanalarının əksəriyyəti yivli əməliyyatlardan istifadə edir, lakin digər tərəfdən libviplər yivləməni görüntü IO sisteminə qoyur və üzərində işləmək üçün hər bir mövzuya bütün təsvir kəmərinin bir nüsxəsini təyin edir. Bu üfüqi yivləmə tərzi prosessor keşlərindən daha yaxşı istifadə edir və kilidləməni azaldır.
Libvips kitabxanası bir çox digər kitabxanalardan daha yaxşı performans təklif edən bir şəkil emal kitabxanasıdır. Kitabxana şəkillərin çəkilməsi, iki şəklin bölünməsi, təsvirin üzərinə dairənin çəkilməsi, şəklin surətinin çıxarılması, təsvirin başqa bir şəklə rənglənməsi, təsvirin üzərinə xətt çəkilməsi, təsvirin çəkilişi, önbellek kimi bir neçə mühüm təsvirin işlənməsi funksiyalarını dəstəkləmişdir. şəkil, iki şəkil əlavə edin, qauss təsviri yaradın, şəkildən nöqtəni oxuyun, şəkli grid edin, şəkli JPEG faylında saxlayın və s.
Libvips ilə işə başlamaq
Aşağıdakı əmrdən istifadə edərək ən son mənbələri klonlayın.
Git əmri ilə libvips quraşdırın
git clone git://github.com/libvips/libvips.git
Git-dən tikinti daha çox paketə ehtiyac duyur, sizə ən azı gtk-doc və gobject-introspection lazımdır.
Git əmri ilə libvips paketlərini quraşdırın
./autogen.sh
make
sudo make install
C++ API vasitəsilə daha sürətli şəkillərin göstərilməsi
Libvips kitabxanası bütün aparıcı platformalarda təsvirin daha sürətli yaradılması və manipulyasiyası üçün funksionallıq təmin etmişdir. ImageMagick və GD kitabxanaları kimi qabaqcıl təsvir emalı kitabxanalarından bəziləri çox güclüdür və şəkillərlə işləmək üçün qabaqcıl funksiyaları təmin edir, lakin şəkilləri emal etmək üçün böyük yaddaş tələb edir. Digər tərəfdən, libviplər ImageMagick ilə praktiki olaraq eyni aktivləri edə bilər, lakin daha sürətli və nisbətən kiçik yaddaş yeri ilə
Şəkli digər dəstəklənən formatlarda yadda saxlayın
Açıq mənbəli libvips kitabxanası müxtəlif formatlarda şəkilləri yükləyən və saxlayan bir sıra əməliyyatlar təqdim etmişdir. Kitabxana şəkilləri TIFF, JPEG, PNG, Analiz, PPM, OpenEXR, CSV, Matlab, Radiance, RAW, FITS, WebP, SVG, PDF, GIF və VIPS kimi məşhur formatlarda saxlamaq üçün daxili dəstəyi daxil edib. VipsForeign şəkilləri müxtəlif formatlarda yükləmək və saxlamaq üçün istifadə edilə bilər.
C++ API vasitəsilə Şəkilləri Yaddaşa oxuyun və yazın
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 );
}
Daha sürətli Şəklin Ölçüsü
Açıq mənbəli libvips kitabxanası proqram tərtibatçılarına öz proqramlarında şəkillərin ölçüsünü tez bir zamanda dəyişmək imkanı verir. Birincisi, təsvirin adını və tam ünvanını təqdim etməklə, təsviri şəkillər deposundan yükləməlisiniz. Bundan sonra onu ehtiyaclarınıza uyğun olaraq göstərilən en və hündürlüyə dəyişdirə bilərsiniz. Bundan sonra onu seçdiyiniz yeri yeni ölçü ilə saxlaya bilərsiniz.
C++ API vasitəsilə Şəkilləri Yaddaşa oxuyun və yazın
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 vasitəsilə Şəkil Filtrləmə
Şəkillərin filtrasiyası bütün dünyada müxtəlif təsvirlərin işlənməsi və kompüter görmə proqramlarında istifadə olunan dəyərli xüsusiyyətdir. Libvips kitabxanası C++ əmrləri vasitəsilə Şəkil filtrasiyası üçün tam dəstək verir. Hamarlaşdırma, itiləmə və kənarın təkmilləşdirilməsi kimi xüsusiyyətlər filtrləmə ilə həyata keçirilən Şəkil emal əməliyyatlarının bəzi nümunələridir. Kitabxana həmçinin sola fərq, orta sola və yuxarıya, adaptiv, avtomatik olaraq ən yaxşı qonşu proqnozlaşdırıcısını seçmək və filtrləmə kimi PNG filtrlərini də daxil etdi. O, həmçinin libMagick və OpenSlide ilə yükləyə bilən idxal filtrlərini ehtiva edir.