1. produkty
  2.   obraz
  3.   C++
  4.   libvips
 
  

Open Source Faster Image Processing Library for  C++

Vytvářet, manipulovat, kreslit, rozdělovat, kopírovat a převádět oblíbené formáty obrázků; Použijte filtry, rozdělte dva obrázky, vytvořte mřížku obrázku pomocí bezplatné knihovny C++.

libvips je open source knihovna pro pokročilé zpracování obrázků, která využívá velmi nízkou paměť a provádí velmi rychlé operace. Knihovna si snadno poradí s velkými obrázky a podporuje slušnou škálu formátů obrázkových souborů, jako jsou JPEG, TIFF, PNG, WebP, HEIC, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM / PGM / PFM, CSV, GIF , Analyze, NIfTI, DeepZoom a OpenSlide. Může snadno načítat obrázky přes ImageMagick nebo GraphicsMagick, což mu umožňuje pracovat s formáty jako DICOM.

Primitiva libvips jsou aplikována rozumně a některé techniky, jako je generování kódu za běhu, pomáhají rychlému zpracování obrázků. Ve srovnání s jinými knihovnami pro zpracování obrazu bylo zaznamenáno, že libvips potřebují málo RAM a běží rychleji, zvláště na strojích s více CPU. Je to hlavně kvůli inteligentní architektuře, kterou používá, která automaticky rozděluje pracovní toky obrazu.

Knihovna poskytuje podporu pro širokou škálu číselných typů, od jednoduchých 8bitových int až po komplexní 128bitové. Většina knihoven pro zpracování obrazu používá operace s vlákny, ale na druhou stranu libvips vloží vlákno do systému I/O obrazu a každému vláknu přiřadí kopii celého kanálu obrazu pro práci na něm. Tento styl horizontálního vlákna umožňuje lepší využití mezipaměti procesoru a snižuje zamykání.

Knihovna libvips je knihovna pro zpracování obrázků, která nabízí lepší výkon než mnoho jiných knihoven. Knihovna poskytuje podporu pro několik důležitých funkcí pro zpracování obrázků, jako je kreslení obrázků, dělení dvou obrázků, kreslení kruhu na obrázku, kopírování obrázku, malování obrázku do jiného obrázku, kreslení čáry na obrázku, odlévání obrázku, cache obrázek, přidat dva obrázky, vytvořit gaussovský obrázek, přečíst bod z obrázku, vytvořit mřížku obrázku, uložit obrázek do souboru JPEG a mnoho dalších.

Previous Next

Začínáme s libvips

Naklonujte nejnovější zdroje pomocí následujícího příkazu.

Nainstalujte libvips pomocí příkazu git

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

Budování z git vyžaduje více balíčků, budete potřebovat alespoň gtk-doc a gobject-introspection.

Nainstalujte balíčky libvips pomocí příkazu git

 ./autogen.sh
make
sudo make install 

Rychlejší vykreslování obrázků přes C++ API

Knihovna libvips poskytuje funkce pro rychlejší vytváření obrázků a manipulaci na všech předních platformách. Některé z předních knihoven pro zpracování obrázků jako ImageMagick a knihovny GD jsou velmi výkonné a poskytují pokročilé funkce pro práci s obrázky, ale pro zpracování obrázků potřebují velké množství paměti. Na druhou stranu, libvips může dělat prakticky stejné aktivity jako ImageMagick, ale mnohem rychleji a s poměrně malou paměťovou stopou.

Uložit obrázek do jiných podporovaných formátů

Knihovna libvips s otevřeným zdrojovým kódem poskytuje sadu operací, které načítají a ukládají obrázky v různých formátech. Knihovna obsahuje vestavěnou podporu pro ukládání obrázků v oblíbených formátech jako TIFF, JPEG, PNG, Analyze, PPM, OpenEXR, CSV, Matlab, Radiance, RAW, FITS, WebP, SVG, PDF, GIF a VIPS. VipsForeign lze použít k načítání a ukládání obrázků v různých formátech.

Čtení a zápis obrázků do paměti přes 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 );
}

Rychlejší změna velikosti obrázku

Knihovna libvips s otevřeným zdrojovým kódem dává vývojářům softwaru možnost měnit velikost obrázků za chodu v rámci jejich vlastních aplikací. Nejprve musíte načíst obrázek z úložiště obrázků zadáním názvu obrázku a úplné adresy. Poté jej můžete upravit na zadanou šířku a výšku podle vašich potřeb. Poté jej můžete uložit na požadované místo s novou velikostí.

Čtení a zápis obrázků do paměti přes 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 );
}

Filtrování obrázků přes C++ API

Filtrování obrazu je cenná funkce, která se používá v různých aplikacích pro zpracování obrazu a počítačové vidění po celém světě. Knihovna libvips poskytuje kompletní podporu pro filtrování obrázků pomocí příkazů C++. Funkce jako vyhlazování, ostření a vylepšení okrajů jsou některé příklady operací zpracování obrazu implementovaných pomocí filtrování. Knihovna také obsahovala PNG filtry, jako je rozdíl doleva, průměr vlevo a nahoru, adaptivní, automaticky vybrat prediktor nejlepšího souseda a žádné filtrování. Zahrnuje také importní filtry, které lze načíst pomocí libMagick a OpenSlide.

 Čeština