1. Producten
  2.   Afbeelding
  3.   C++
  4.   libvips
 
  

Open Source Snellere beeldverwerking Bibliotheek voor C++

Creëer, manipuleer, teken, verdeel, kopieer en converteer populaire beeldformaten; Filters toepassen, twee afbeeldingen splitsen, een afbeelding rasteren via Free C++ Library.

De libvips is een open source geavanceerde beeldverwerkingsbibliotheek die zeer weinig geheugen gebruikt en zeer snelle bewerkingen uitvoert. De bibliotheek kan gemakkelijk grote afbeeldingen aan en ondersteunt een behoorlijk aantal afbeeldingsbestandsindelingen, zoals JPEG, TIFF, PNG, WebP, HEIC, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM / PGM / PFM, CSV, GIF , Analyseren, NIfTI, DeepZoom en OpenSlide. Het kan gemakkelijk afbeeldingen laden via ImageMagick of GraphicsMagick, waardoor het kan werken met formaten zoals DICOM.

De libvips-primitieven worden verstandig toegepast en sommige gebruiken technieken zoals run-time codegeneratie helpt bij het snel verwerken van afbeeldingen. In vergelijking met andere beeldverwerkingsbibliotheken werd opgemerkt dat libvips weinig RAM nodig hebben en sneller werken, vooral op machines met meerdere CPU's. Dit komt voornamelijk door de intelligente architectuur die het gebruikt die de beeldworkflows automatisch verdeelt.

De bibliotheek biedt ondersteuning voor een groot aantal numerieke typen, van eenvoudige 8-bits int tot complexe 128-bits. De meeste beeldverwerkingsbibliotheken gebruiken threaded-bewerkingen, maar libvips daarentegen plaatst de threading in het image IO-systeem en wijst een kopie van de volledige beeldpijplijn toe aan elke thread om eraan te werken. Deze horizontale threading-stijl maakt beter gebruik van processorcaches en vermindert vergrendeling.

De libvips-bibliotheek is een bibliotheek voor beeldverwerking die betere prestaties biedt dan veel andere bibliotheken. De bibliotheek biedt ondersteuning voor verschillende belangrijke functies voor beeldverwerking, zoals afbeeldingen tekenen, twee afbeeldingen splitsen, een cirkel op een afbeelding tekenen, een afbeelding kopiëren, een afbeelding in een andere afbeelding schilderen, een lijn op een afbeelding tekenen, een afbeelding casten, cache een afbeelding, twee afbeeldingen toevoegen, een Gauss-afbeelding maken, een punt uit een afbeelding lezen, een afbeelding rasteren, de afbeelding opslaan in een JPEG-bestand en nog veel meer.

Previous Next

Aan de slag met libvips

Kloon de nieuwste bronnen met behulp van de volgende opdracht.

Installeer libvips via het git-commando

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

Bouwen vanuit git heeft meer pakketten nodig, je hebt op zijn minst gtk-doc en gobject-introspection nodig.

Installeer libvips-pakketten via het git-commando

 ./autogen.sh
make
sudo make install 

Snellere weergave van afbeeldingen via C++ API

De libvips-bibliotheek heeft functionaliteit geboden voor het sneller maken en manipuleren van afbeeldingen op alle toonaangevende platforms. Sommige van de toonaangevende bibliotheken voor beeldverwerking, zoals ImageMagick en GD-bibliotheken, zijn zeer krachtig en bieden geavanceerde functies voor het werken met afbeeldingen, maar hebben een grote hoeveelheid geheugen nodig voor het verwerken van afbeeldingen. Aan de andere kant kunnen libvips vrijwel dezelfde actives doen als ImageMagick, maar veel sneller en met een relatief kleine geheugenvoetafdruk

Afbeelding opslaan in andere ondersteunde indelingen

De open source libvips-bibliotheek heeft een reeks bewerkingen geboden die afbeeldingen in verschillende formaten laden en opslaan. De bibliotheek heeft ingebouwde ondersteuning voor het opslaan van afbeeldingen in populaire formaten zoals TIFF, JPEG, PNG, Analyse, PPM, OpenEXR, CSV, Matlab, Radiance, RAW, FITS, WebP, SVG, PDF, GIF en VIPS. De VipsForeign kan worden gebruikt om afbeeldingen in verschillende formaten te laden en op te slaan.

Lees en schrijf Images naar Memory 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 );
}

Sneller formaat wijzigen

De open source libvips-bibliotheek geeft softwareontwikkelaars de mogelijkheid om afbeeldingen direct in hun eigen apps te verkleinen. Eerst moet u de afbeelding uit de afbeeldingenrepository laden door een afbeeldingsnaam en een volledig adres op te geven. Daarna kunt u het formaat aanpassen aan de opgegeven breedte en hoogte volgens uw behoeften. Daarna kunt u het opslaan op de locatie van uw keuze met het nieuwe formaat.

Lees en schrijf Images naar Memory 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 );
}

Beeldfiltering via C++ API

Beeldfiltering is een waardevolle functie die wordt gebruikt in verschillende toepassingen voor beeldverwerking en computervisie over de hele wereld. De libvips-bibliotheek biedt volledige ondersteuning voor beeldfiltering via C++-opdrachten. Functies zoals vloeiend maken, verscherpen en randverbetering zijn enkele voorbeelden van beeldverwerkingsbewerkingen die zijn geïmplementeerd met filtering. De bibliotheek bevatte ook PNG-filters zoals verschil naar links, een gemiddelde van links en hoger, adaptief, automatisch de beste buurvoorspeller kiezen en geen filtering. Het bevat ook importfilters die kunnen worden geladen met libMagick en met OpenSlide.

 Dutch