Öppen källkod snabbare bildbehandling bibliotek för C++
Skapa, manipulera, rita, dela, kopiera och konvertera populära bildformat; Använd filter, dela två bilder, rutnät en bild via Free C++ Library.
Libvips är ett avancerat bildbehandlingsbibliotek med öppen källkod som använder mycket lågt minne och utför mycket snabba operationer. Biblioteket kan enkelt hantera stora bilder och stöder ett anständigt utbud av bildfilformat, såsom JPEG, TIFF, PNG, WebP, HEIC, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM / PGM / PFM, CSV, GIF , Analysera, NIfTI, DeepZoom och OpenSlide. Den kan enkelt ladda bilder via ImageMagick eller GraphicsMagick, vilket gör att den kan fungera med format som DICOM.
Primitiva libvips tillämpas förnuftigt och vissa användningstekniker som runtime-kodgenerering hjälper snabb bearbetning av bilder. I jämförelse med andra bildbehandlingsbibliotek noterades att libvips behöver lite RAM och körs snabbare, särskilt på maskiner med flera processorer. Detta beror främst på den intelligenta arkitekturen den använder som automatiskt delar upp bildarbetsflödena.
Biblioteket ger stöd för ett stort antal numeriska typer, från enkla 8-bitars int till den komplexa 128-bitars. De flesta av bildbehandlingsbiblioteken använder trådade operationer men libvips å andra sidan lägger tråden i bild-IO-systemet och tilldelar en kopia av hela bildpipelinen till varje tråd för att arbeta med den. Denna horisontella trådningsstil utnyttjar processorcacher bättre och minskar låsningen.
Libvips-biblioteket är ett bildbehandlingsbibliotek som erbjuder bättre prestanda än många andra bibliotek. Biblioteket har gett stöd för flera viktiga bildbehandlingsfunktioner som att rita bilder, dela två bilder, rita en cirkel på en bild, kopiera en bild, måla en bild till en annan bild, rita en linje på en bild, gjuta en bild, cache en bild, lägg till två bilder, gör en gaussisk bild, läs en punkt från en bild, rutnät en bild, spara bilden till JPEG-fil och många fler.
Komma igång med libvips
Klona de senaste källorna med följande kommando.
Installera libvips via git-kommandot
git clone git://github.com/libvips/libvips.git
Att bygga från git behöver fler paket, du behöver åtminstone gtk-doc och gobject-introspection.
Installera libvips-paket via git-kommandot
./autogen.sh
make
sudo make install
Snabbare bildrendering via C++ API
Libvips-biblioteket har tillhandahållit funktionalitet för snabbare bildskapande och manipulering på alla ledande plattformar. Några av de ledande bildbehandlingsbiblioteken som ImageMagick och GD-bibliotek är mycket kraftfulla och ger avancerade funktioner för att arbeta med bilder men behöver en stor mängd minne för att bearbeta bilder. Å andra sidan kan libvips göra praktiskt taget samma aktiva som ImageMagick, men mycket snabbare och med ett jämförelsevis litet minnesfotavtryck
Spara bild i andra format som stöds
Libvips-biblioteket med öppen källkod har tillhandahållit en uppsättning operationer som laddar och sparar bilder i en mängd olika format. Biblioteket har inkluderat inbyggt stöd för att spara bilder i populära format som TIFF, JPEG, PNG, Analyze, PPM, OpenEXR, CSV, Matlab, Radiance, RAW, FITS, WebP, SVG, PDF, GIF och VIPS. VipsForeign kan användas för att ladda och spara bilder i en mängd olika format.
Läs och skriv bilder till minnet via 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 );
}
Snabbare bildstorlek
Libvips-biblioteket med öppen källkod ger mjukvaruutvecklare möjlighet att ändra storlek på bilder i farten i sina egna appar. Först måste du ladda bilden från bildarkivet genom att ange ett bildnamn och fullständig adress. Efter det kan du ändra storlek på den till angiven bredd och höjd enligt dina behov. Efter det kan du spara den valfri plats med den nya storleken.
Läs och skriv bilder till minnet via 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 );
}
Bildfiltrering via C++ API
Bildfiltrering är en värdefull funktion som används i olika bildbehandlings- och datorseendeapplikationer över hela världen. Libvips-biblioteket ger komplett stöd för bildfiltrering via C++-kommandon. Funktioner som utjämning, skärpa och kantförbättring är några exempel på bildbehandlingsoperationer implementerade med filtrering. Biblioteket inkluderade också PNG-filter som skillnad till vänster, ett genomsnitt av vänster och uppåt, adaptivt, välj bästa granneprediktor automatiskt och ingen filtrering. Den innehåller också importfilter som kan laddas med libMagick och med OpenSlide.