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

Open Source Hurtigere billedbehandlingsbibliotek til  C++

Opret, manipuler, tegn, del, kopier og konverter populære billedformater; Anvend filtre, del to billeder, grid et billede via gratis C++ bibliotek.

Libvips er et åben kildekode avanceret billedbehandlingsbibliotek, der bruger meget lav hukommelse og udfører meget hurtige operationer. Biblioteket kan nemt håndtere store billeder og understøtter en anstændig række billedfilformater, såsom JPEG, TIFF, PNG, WebP, HEIC, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM / PGM / PFM, CSV, GIF , Analyse, NIfTI, DeepZoom og OpenSlide. Det kan nemt indlæse billeder via ImageMagick eller GraphicsMagick, så det kan arbejde med formater som DICOM.

Libvips primitiver anvendes fornuftigt, og nogle bruger teknikker som run-time kodegenerering hjælper med hurtig behandling af billeder. I sammenligning med andre billedbehandlingsbiblioteker blev det bemærket, at libvips har brug for lidt RAM og kører hurtigere, især på maskiner med flere CPU'er. Dette er primært på grund af den intelligente arkitektur, den bruger, som automatisk opdeler billedarbejdsgangene.

Biblioteket understøtter et stort udvalg af numeriske typer, fra simple 8-bit int til de komplekse 128-bit. De fleste billedbehandlingsbiblioteker bruger trådede operationer, men libvips sætter på den anden side tråden ind i billed-IO-systemet og tildeler en kopi af hele billedpipelinen til hver tråd for at arbejde på den. Denne vandrette trådningsstil gør bedre brug af processorcache og reducerer låsning.

Libvips-biblioteket er et billedbehandlingsbibliotek, der tilbyder bedre ydeevne end mange andre biblioteker. Biblioteket har ydet support til flere vigtige billedbehandlingsfunktioner såsom at tegne billeder, dele to billeder, tegne en cirkel på et billede, kopiere et billede, male et billede til et andet billede, tegne en streg på et billede, cache et billede, cache et billede, tilføj to billeder, lav et gaussisk billede, læs et punkt fra et billede, grid et billede, gem billedet til JPEG-fil og mange flere.

Previous Next

Kom godt i gang med libvips

Klon de seneste kilder ved hjælp af følgende kommando.

Installer libvips via git kommando

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

At bygge fra git kræver flere pakker, du skal i det mindste have gtk-doc og gobject-introspection.

Installer libvips-pakker via git-kommando

 ./autogen.sh
make
sudo make install 

Hurtigere billedgengivelse via C++ API

Libvips-biblioteket har leveret funktionalitet til hurtigere billedoprettelse og manipulation på alle de førende platforme. Nogle af de førende billedbehandlingsbiblioteker som ImageMagick og GD biblioteker er meget kraftfulde og giver avancerede funktioner til at arbejde med billeder, men har brug for en stor mængde hukommelse til at behandle billeder. På den anden side kan libvips gøre stort set de samme aktive som ImageMagick, men meget hurtigere og med et forholdsvis lille hukommelsesfodaftryk

Gem billede i andre understøttede formater

Open source-libvips-biblioteket har leveret et sæt operationer, der indlæser og gemmer billeder i en række forskellige formater. Biblioteket har inkluderet indbygget support til at gemme billeder i populære formater som TIFF, JPEG, PNG, Analyse, PPM, OpenEXR, CSV, Matlab, Radiance, RAW, FITS, WebP, SVG, PDF, GIF og VIPS. VipsForeign kan bruges til at indlæse og gemme billeder i en række forskellige formater.

Læs og skriv billeder til hukommelsen 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 );
}

Hurtigere billedstørrelse

Open source libvips-biblioteket giver softwareudviklere muligheden for at ændre størrelsen på billeder på farten i deres egne apps. Først skal du indlæse billedet fra billedlageret ved at angive et billednavn og fuldstændig adresse. Derefter kan du ændre størrelsen på den til den angivne bredde og højde efter dine behov. Derefter kan du gemme den efter eget valg med den nye størrelse.

Læs og skriv billeder til hukommelsen 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 );
}

Billedfiltrering via C++ API

Billedfiltrering er en værdifuld funktion, der bruges i forskellige billedbehandlings- og computervisionsapplikationer over hele kloden. Libvips-biblioteket giver komplet understøttelse af billedfiltrering via C++-kommandoer. Funktioner som udjævning, skarphed og kantforbedring er nogle eksempler på billedbehandlingsoperationer implementeret med filtrering. Biblioteket inkluderede også PNG-filtre som forskel til venstre, et gennemsnit af venstre og op, adaptiv, vælg den bedste nabo-prædiktor automatisk og ingen filtrering. Det inkluderer også importfiltre, der kan indlæses med libMagick og med OpenSlide.

 Dansk