1. Produkter
  2.   Bilde
  3.   C++
  4.   libvips
 
  

Open Source Raskere bildebehandling bibliotek for  C++

Lag, manipuler, tegn, del, kopier og konverter populære bildeformater; Bruk filtre, del to bilder, rute et bilde via Free C++ Library.

Libvips er et åpen kildekode avansert bildebehandlingsbibliotek som bruker svært lite minne og utfører svært raske operasjoner. Biblioteket kan enkelt håndtere store bilder og støtter et anstendig utvalg bildefilformater, som JPEG, TIFF, PNG, WebP, HEIC, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM / PGM / PFM, CSV, GIF , Analyser, NIfTI, DeepZoom og OpenSlide. Den kan enkelt laste inn bilder via ImageMagick eller GraphicsMagick, slik at den kan fungere med formater som DICOM.

Libvips-primitivene brukes fornuftig, og noen bruker teknikker som generering av kjøretidskode hjelper rask behandling av bilder. Sammenlignet med andre bildebehandlingsbiblioteker, ble det bemerket at libvips trenger lite RAM og kjører raskere, spesielt på maskiner med flere CPUer. Dette er hovedsakelig på grunn av den intelligente arkitekturen den bruker som automatisk deler opp bildearbeidsflytene.

Biblioteket gir støtte for et stort spekter av numeriske typer, fra enkle 8-biters int til komplekse 128-biters. De fleste bildebehandlingsbibliotekene bruker trådede operasjoner, men libvips på den annen side legger tråden inn i bilde-IO-systemet og tilordner en kopi av hele bilderørledningen til hver tråd for å jobbe med den. Denne horisontale trådingsstilen utnytter prosessorcacher bedre og reduserer låsing.

Libvips-biblioteket er et bildebehandlingsbibliotek som tilbyr bedre ytelse enn mange andre biblioteker. Biblioteket har gitt støtte for flere viktige bildebehandlingsfunksjoner som å tegne bilder, dele to bilder, tegne en sirkel på et bilde, kopiere et bilde, male et bilde inn i et annet bilde, tegne en linje på et bilde, kaste et bilde, cache et bilde, legg til to bilder, lag et gaussisk bilde, les et punkt fra et bilde, grid et bilde, lagre bildet til JPEG-fil og mange flere.

Previous Next

Komme i gang med libvips

Klon de nyeste kildene ved å bruke følgende kommando.

Installer libvips via git-kommandoen

 git clone git://github.com/libvips/libvips.git 

Å bygge fra git trenger flere pakker, du trenger minst gtk-doc og gobject-introspection.

Installer libvips-pakker via git-kommandoen

 ./autogen.sh
make
sudo make install 

Raskere bildegjengivelse via C++ API

Libvips-biblioteket har gitt funksjonalitet for raskere bildeoppretting og manipulering på alle de ledende plattformene. Noen av de ledende bildebehandlingsbibliotekene som ImageMagick og GD-bibliotekene er veldig kraftige og gir avanserte funksjoner for å jobbe med bilder, men trenger en stor mengde minne for å behandle bilder. På den annen side kan libvips gjøre praktisk talt de samme aktive aktivitetene som ImageMagick, men mye raskere og med et relativt lite minneavtrykk

Lagre bilde i andre støttede formater

Libvips-biblioteket med åpen kildekode har gitt et sett med operasjoner som laster og lagrer bilder i en rekke formater. Biblioteket har inkludert innebygd støtte for lagring av bilder i populære formater som TIFF, JPEG, PNG, Analyse, PPM, OpenEXR, CSV, Matlab, Radiance, RAW, FITS, WebP, SVG, PDF, GIF og VIPS. VipsForeign kan brukes til å laste og lagre bilder i en rekke formater.

Les og skriv bilder til 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 );
}

Raskere bildestørrelse

Libvips-biblioteket med åpen kildekode gir programvareutviklere muligheten til å endre størrelse på bilder på farten i sine egne apper. Først må du laste inn bildet fra bildelageret ved å oppgi et bildenavn og fullstendig adresse. Etter det kan du endre størrelsen på den til spesifisert bredde og høyde i henhold til dine behov. Etter det kan du lagre det stedet du ønsker med den nye størrelsen.

Les og skriv bilder til 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 );
}

Bildefiltrering via C++ API

Bildefiltrering er en verdifull funksjon som brukes i ulike bildebehandlings- og datasynsapplikasjoner over hele verden. Libvips-biblioteket gir fullstendig støtte for bildefiltrering via C++-kommandoer. Funksjoner som utjevning, skarphet og kantforbedring er noen eksempler på bildebehandlingsoperasjoner implementert med filtrering. Biblioteket inkluderte også PNG-filtre som forskjell til venstre, et gjennomsnitt av venstre og oppover, adaptiv, velg beste naboprediktor automatisk og ingen filtrering. Det inkluderer også importfiltre som kan lastes med libMagick og med OpenSlide.

 Norsk