1. Tuotteet
  2.   Kuva
  3.   C++
  4.   libvips
 
  

Avoimen lähdekoodin nopeampi kuvankäsittelykirjasto C++:lle

Luo, manipuloi, piirrä, jaa, kopioi ja muunna suosittuja kuvamuotoja; Käytä suodattimia, jaa kaksi kuvaa, ruudukkokuva ilmaisen C++ Libraryn kautta.

Libvips on avoimen lähdekoodin kehittynyt kuvankäsittelykirjasto, joka käyttää erittäin vähän muistia ja suorittaa erittäin nopeita toimintoja. Kirjasto pystyy käsittelemään helposti suuria kuvia ja tukee kunnollista valikoimaa kuvatiedostomuotoja, kuten JPEG, TIFF, PNG, WebP, HEIC, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM / PGM / PFM, CSV, GIF , Analysoi, NIfTI, DeepZoom ja OpenSlide. Se voi ladata kuvia helposti ImageMagickin tai GraphicsMagickin kautta, jolloin se toimii DICOMin kaltaisten tiedostomuotojen kanssa.

Libvips-primitiivejä käytetään järkevästi, ja jotkut käyttötekniikat, kuten ajonaikaisen koodin luominen, auttavat kuvien nopeassa käsittelyssä. Verrattuna muihin kuvankäsittelykirjastoihin, havaittiin, että libvips tarvitsee vähän RAM-muistia ja toimii nopeammin, etenkin koneissa, joissa on useita prosessoreita. Tämä johtuu pääasiassa sen käyttämästä älykkäästä arkkitehtuurista, joka jakaa kuvatyönkulut automaattisesti.

Kirjasto tukee valtavaa määrää numeerisia tyyppejä yksinkertaisista 8-bittisistä intistä monimutkaisiin 128-bittisiin. Suurin osa kuvankäsittelykirjastoista käyttää säikeistettyjä operaatioita, mutta libvips toisaalta laittaa ketjutuksen kuvan IO-järjestelmään ja määrittää jokaiselle säikeelle kopion koko kuvaputkesta sen käsittelemistä varten. Tämä vaakasuora ketjutustyyli hyödyntää paremmin prosessorin välimuistia ja vähentää lukitusta.

Libvips-kirjasto on kuvankäsittelykirjasto, joka tarjoaa paremman suorituskyvyn kuin monet muut kirjastot. Kirjasto on tarjonnut tukea useille tärkeille kuvankäsittelytoiminnoille, kuten kuvien piirtämiseen, kahden kuvan jakamiseen, ympyrän piirtämiseen kuvaan, kuvan kopioimiseen, kuvan maalaamiseen toiseksi kuvaksi, viivan piirtämiseen kuvaan, kuvan lähettämiseen, välimuistiin. kuva, lisää kaksi kuvaa, tee Gaussin kuva, lue piste kuvasta, ruudukkokuva, tallenna kuva JPEG-tiedostoon ja paljon muuta.

Previous Next

Libvipsin käytön aloittaminen

Kloonaa uusimmat lähteet seuraavalla komennolla.

Asenna libvips git-komennolla

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

Gitistä rakentaminen vaatii enemmän paketteja, tarvitset ainakin gtk-docin ja gobject-introspectionin.

Asenna libvips-paketit git-komennolla

 ./autogen.sh
make
sudo make install 

Nopeampi kuvien renderöinti C++ API:n kautta

Libvips-kirjasto on tarjonnut toimintoja nopeampaan kuvien luomiseen ja käsittelyyn kaikilla johtavilla alustoilla. Jotkut johtavista kuvankäsittelykirjastoista, kuten ImageMagick- ja GD-kirjastot, ovat erittäin tehokkaita ja tarjoavat edistyneitä ominaisuuksia kuvien käsittelyyn, mutta tarvitsevat paljon muistia kuvien käsittelyyn. Toisaalta libvips voi tehdä käytännössä samat aktiivit kuin ImageMagick, mutta paljon nopeammin ja suhteellisen pienellä muistitilalla

Tallenna kuva muihin tuettuihin muotoihin

Avoimen lähdekoodin libvips-kirjasto on tarjonnut joukon toimintoja, jotka lataavat ja tallentavat kuvia eri muodoissa. Kirjastossa on sisäänrakennettu tuki kuvien tallentamiseen suosituissa muodoissa, kuten TIFF, JPEG, PNG, Analyze, PPM, OpenEXR, CSV, Matlab, Radiance, RAW, FITS, WebP, SVG, PDF, GIF ja VIPS. VipsForeignia voidaan käyttää kuvien lataamiseen ja tallentamiseen useissa eri muodoissa.

Lue ja kirjoita kuvia muistiin C++ API:n kautta

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 );
}

Nopeampi kuvan koon muuttaminen

Avoimen lähdekoodin libvips-kirjasto antaa ohjelmistokehittäjille mahdollisuuden muuttaa kuvien kokoa lennossa omissa sovelluksissaan. Ensin sinun on ladattava kuva kuvavarastosta antamalla kuvan nimi ja täydellinen osoite. Sen jälkeen voit muuttaa sen kokoa määritettyyn leveyteen ja korkeuteen tarpeidesi mukaan. Sen jälkeen voit tallentaa sen haluamaasi paikkaan uudella koolla.

Lue ja kirjoita kuvia muistiin C++ API:n kautta

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 );
}

Kuvan suodatus C++ API:n kautta

Kuvan suodatus on arvokas ominaisuus, jota käytetään erilaisissa kuvankäsittely- ja tietokonenäkösovelluksissa ympäri maailmaa. Libvips-kirjasto tarjoaa täydellisen tuen kuvien suodatukselle C++-komentojen avulla. Ominaisuudet, kuten tasoitus, teroitus ja reunan parantaminen, ovat esimerkkejä suodatuksella toteutetuista kuvankäsittelytoiminnoista. Kirjasto sisälsi myös PNG-suodattimet, kuten erot vasemmalle, keskiarvo vasemmalle ja ylöspäin, mukautuva, valitse paras naapuri ennustaja automaattisesti ja ei suodatusta. Se sisältää myös tuontisuodattimia, jotka voidaan ladata libMagickin ja OpenSliden avulla.

 Suomen