Nyílt forráskódú Gyorsabb képfeldolgozási könyvtár C++-hoz
Népszerű képformátumok létrehozása, manipulálása, rajzolása, felosztása, másolása és konvertálása; Szűrők alkalmazása, két kép felosztása, egy kép rácsozása a Free C++ Library segítségével.
A libvips egy nyílt forráskódú fejlett képfeldolgozó könyvtár, amely nagyon kevés memóriát használ, és nagyon gyors műveleteket hajt végre. A könyvtár könnyen kezeli a nagy képeket, és támogatja a képfájlformátumok széles skáláját, például JPEG, TIFF, PNG, WebP, HEIC, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM / PGM / PFM, CSV, GIF , Analyze, NIfTI, DeepZoom és OpenSlide. Könnyedén betölthet képeket az ImageMagick vagy a GraphicsMagick segítségével, lehetővé téve, hogy olyan formátumokkal működjön együtt, mint a DICOM.
A libvips primitíveket ésszerűen alkalmazzák, és egyes technikák, például a futásidejű kódgenerálás segíti a képek gyors feldolgozását. Más képfeldolgozó könyvtárakhoz képest megjegyezték, hogy a libvips kevés RAM-ot igényel, és gyorsabban fut, különösen a több CPU-val rendelkező gépeken. Ez elsősorban az általa használt intelligens architektúrának köszönhető, amely automatikusan felosztja a képi munkafolyamatokat.
A könyvtár számos numerikus típushoz nyújt támogatást, az egyszerű 8 bites inttől az összetett 128 bitesig. A legtöbb képfeldolgozó könyvtár szálas műveleteket használ, de a libvips a szálfűzést a kép IO-rendszerébe helyezi, és minden szálhoz hozzárendeli a teljes képfolyam egy másolatát, hogy dolgozzon rajta. Ez a vízszintes szálfűzési stílus jobban kihasználja a processzor gyorsítótárait, és csökkenti a zárolást.
A libvips könyvtár egy képfeldolgozó könyvtár, amely jobb teljesítményt nyújt, mint sok más könyvtár. A könyvtár számos fontos képfeldolgozási funkcióhoz nyújtott támogatást, mint például képek rajzolása, két kép felosztása, kör rajzolása egy képre, kép másolása, kép más képpé festése, vonal rajzolása a képre, kép öntése, gyorsítótár egy képet, adjon hozzá két képet, készítsen Gauss-képet, olvasson ki egy pontot a képből, rácsozzon egy képet, mentse a képet JPEG fájlba és még sok más.
A libvips első lépései
Klónozza a legújabb forrásokat a következő paranccsal.
Telepítse a libvips-t a git paranccsal
git clone git://github.com/libvips/libvips.git
A git-ből való építéshez több csomagra van szükség, legalább gtk-doc és gobject-introspection szükséges.
Telepítse a libvips csomagokat a git paranccsal
./autogen.sh
make
sudo make install
Gyorsabb képmegjelenítés C++ API-n keresztül
A libvips könyvtár funkcionalitást biztosít a gyorsabb képalkotáshoz és -manipulációhoz az összes vezető platformon. Néhány vezető képfeldolgozó könyvtár, például az ImageMagick és a GD könyvtárak nagyon erősek, és fejlett funkciókat biztosítanak a képekkel való munkavégzéshez, de nagy mennyiségű memóriára van szükségük a képek feldolgozásához. Másrészt a libvips gyakorlatilag ugyanazokat az aktív műveleteket tudja végrehajtani, mint az ImageMagick, de sokkal gyorsabban és viszonylag kis memóriaterülettel
Kép mentése más támogatott formátumokba
A nyílt forráskódú libvips könyvtár egy sor olyan műveletet kínál, amelyek különféle formátumokban töltik be és mentik a képeket. A könyvtár beépített támogatást tartalmaz a képek mentéséhez olyan népszerű formátumokban, mint a TIFF, JPEG, PNG, Analyze, PPM, OpenEXR, CSV, Matlab, Radiance, RAW, FITS, WebP, SVG, PDF, GIF és VIPS. A VipsForeign segítségével különféle formátumokban tölthet be és menthet képeket.
Képek olvasása és írása a memóriába C++ API-n keresztül
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 );
}
Gyorsabb képátméretezés
A nyílt forráskódú libvips könyvtár lehetővé teszi a szoftverfejlesztők számára, hogy menet közben átméretezzék a képeket saját alkalmazásaikban. Először is be kell töltenie a képet a képtárból a képnév és a teljes cím megadásával. Ezt követően igény szerint átméretezheti a megadott szélességre és magasságra. Ezt követően az új mérettel elmentheti a kívánt helyre.
Képek olvasása és írása a memóriába C++ API-n keresztül
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 );
}
Képszűrés C++ API-n keresztül
A képszűrés értékes szolgáltatás, amelyet a különböző képfeldolgozó és számítógépes látási alkalmazásokban használnak szerte a világon. A libvips könyvtár teljes mértékben támogatja a C++ parancsokon keresztüli képszűrést. Az olyan funkciók, mint a simítás, élesítés és éljavítás, néhány példa a szűréssel megvalósított képfeldolgozási műveletekre. A könyvtár PNG-szűrőket is tartalmazott, mint például a bal oldali különbség, balra és felfelé átlag, adaptív, automatikusan kiválasztja a legjobb szomszéd előrejelzőt, és nincs szűrés. Tartalmaz importszűrőket is, amelyek betölthetők a libMagick és az OpenSlide segítségével.