ImageMagick
Otevřete zdrojovou knihovnu C pro vytváření a převod obrázků
Vytvářejte, upravujte, sestavujte, čtěte a převádějte bitmapové obrázky pomocí bezplatného rozhraní C API. Umožňuje měnit velikost, překlápět, zrcadlit, otáčet, deformovat, stříhat a transformovat obrázky v aplikacích C.
ImageMagick je knihovna s otevřeným zdrojovým kódem, která umožňuje vývojářům softwaru zahrnout možnosti zpracování obrazu do jejich vlastních aplikací v jazyce C. Knihovna je multiplatformní a může hladce běžet na systémech Linux, Windows, Mac Os X, iOS, Android OS a mnoha dalších. Zahrnuje podporu pro čtení, zobrazování, vytváření, konverzi, úpravu a úpravu rastrových obrázků pomocí kódu C.
Jednou ze skvělých vlastností ImageMagick je jeho schopnost přesně a profesionálně převádět obrázky mezi různými předními formáty souborů. Knihovna obsahuje podporu pro více než 200 formátů obrazových souborů, jako jsou JPEG, PNG, GIF, HEIC, Exif, TIFF, CGM, DPX, EXR, WebP, Postscript, PDF, SVG a mnoho dalších. Knihovna také poskytuje podporu pro kreslení, stejně jako grafiku a animovanou grafiku s lehkostí.
Knihovna je velmi bohatá na funkce a obsahuje podporu pro některé běžné funkce pro zpracování obrazu, jako je změna velikosti a převrácení obrazu, zrcadlení a otáčení obrazu, zkreslení, transformace obrazu, úprava barev obrazu, použití různých speciálních efektů, rozmazání nebo doostření nebo prahová hodnota, přechody obrazu , chytrá detekce hran kreslení textu, čar, polygonů, elips, pomocí matematických výrazů a mnoho dalších. Nedávno knihovna také zahrnuje podporu pro extrahování textu z obrázků pomocí OCR.
Začínáme s ImageMagick
Naklonujte nejnovější zdroje pomocí následujícího příkazu
Nainstalujte ImageMagick přes GitHub.
git clone https://github.com/ImageMagick/ImageMagick.git
Nebo jej nainstalujte pomocí následujícího příkazu.
Nainstalujte ImageMagick pomocí RPM.
$ rpm -Uvh ImageMagick-libs-7.0.10-60.x86_64.rpm
Převést obrázek do jiných formátů
Open source knihovna C ImageMagick umožňuje softwarovým programátorům převádět obrázky do jiných podporovaných formátů souborů v rámci jejich vlastních aplikací. Uživatelé musí před převodem na jiný formát zadat parametr format. Knihovna vnitřně převede obraz do jiných formátů dříve, než použije transformace. Knihovna podporuje konverzi do několika populárních obrazových formátů, jako jsou BMP, CMYK, GIF, JPEG, PBM, PNG, RGB, SVG, TIFF a XPM. Jedním z velkých aspektů knihovny je snadné použití při převodu obrázku. Poskytuje také možnost zmenšit velikost obrázku a použít různé efekty před jeho napsáním v požadovaném formátu.
Převeďte GIF na obrázek JPEG pomocí ImageMagick
#include
using namespace std;
using namespace Magick;
int main(int argc,char **argv)
{
InitializeMagick(*argv);
// Read GIF file from disk
Image image( "giraffe.gif" );
// Write to BLOB in JPEG format
Blob blob;
image.magick( "JPEG" ) // Set JPEG output format
image.write( &blob );
[ Use BLOB data (in JPEG format) here ]
return 0;
}
Podpora přechodů obrázků pomocí C API
Open source knihovna C ImageMagick umožňuje vývojářům softwaru vytvářet barevné přechody pomocí C příkazů. Můžete snadno vytvořit postupné prolnutí jedné nebo více barev pomocí vodorovných, svislých, kruhových nebo eliptických tvarů. Knihovna vylepšila přechody pomocí několika –definic, jako je určení směru lineárního přechodu, identifikace souřadnic středového bodu pro radiální přechod, omezení přechodu na větší nebo menší oblast, než jsou rozměry obrázku atd. na. Navíc pro nelineární přechody ve stupních šedi přidejte před uložením výstupu -colorspace RGB -colorspace grey.
Vytvořte jednoduchý přechod ve stupních šedi pomocí rozhraní C API
void test_wand(LPTSTR lpCmdLine)
{
MagickWand *m_wand = NULL;
PixelWand *p_wand = NULL;
PixelIterator *iterator = NULL;
PixelWand **pixels = NULL;
int x,y,gray;
char hex[128];
MagickWandGenesis();
p_wand = NewPixelWand();
PixelSetColor(p_wand,"white");
m_wand = NewMagickWand();
// Create a 100x100 image with a default of white
MagickNewImage(m_wand,100,100,p_wand);
// Get a new pixel iterator
iterator=NewPixelIterator(m_wand);
for(y=0;y<100;y++) {
// Get the next row of the image as an array of PixelWands
pixels=PixelGetNextIteratorRow(iterator,&x);
// Set the row of wands to a simple gray scale gradient
for(x=0;x<100;x++) {
gray = x*255/100;
sprintf(hex,"#%02x%02x%02x",gray,gray,gray);
PixelSetColor(pixels[x],hex);
}
// Sync writes the pixels back to the m_wand
PixelSyncIterator(iterator);
}
MagickWriteImage(m_wand,"bits_demo.gif");
// Clean up
iterator=DestroyPixelIterator(iterator);
DestroyMagickWand(m_wand);
MagickWandTerminus();
}
Aplikujte na snímky speciální efekty pomocí C
Open source knihovna C ImageMagick poskytuje funkce pro aplikaci různých typů efektů na obrázky. Poskytuje několik důležitých funkcí, jako je rozmazání, doostření, prahová hodnota, vytváření stínů, prolnutí tvarů nebo tónování obrazu pomocí několika řádků kódu C. Podporovány jsou také některé speciální efekty rozostření, jako je rozostření rádia a rozostření pohybu.
Použijte efekt dlaždicového písma prostřednictvím rozhraní C API
magick_wand = NewMagickWand();
d_wand = NewDrawingWand();
p_wand = NewPixelWand();
set_tile_pattern(d_wand,"#check","pattern:checkerboard");
PixelSetColor(p_wand,"lightblue");
// Create a new transparent image
MagickNewImage(magick_wand,320,100,p_wand);
// Set up a 72 point font
DrawSetFont (d_wand, "Verdana-Bold-Italic" ) ;
DrawSetFontSize(d_wand,72);
// Now draw the text
DrawAnnotation(d_wand,28,68,"Magick");
// Draw the image on to the magick_wand
MagickDrawImage(magick_wand,d_wand);
// Trim the image
MagickTrimImage(magick_wand,0);
// Add a transparent border
PixelSetColor(p_wand,"lightblue");
MagickBorderImage(magick_wand,p_wand,5,5);
// and write it
MagickWriteImage(magick_wand,"text_pattern.png");
Podpora velkých obrázků
Knihovna C ImageMagick poskytuje podporu pro práci s velmi velkými obrázky. Umožňuje vývojářům otevírat, číst, zpracovávat nebo zapisovat obrázky až do velikosti Mega-, Giga- nebo Tera-pixelů v rámci jejich vlastních aplikací pro zpracování obrázků. Knihovna umožňuje změnit velikost obrázku na čtvrt milionu pixelů čtverečních. Při práci s velkými obrázky musíte zajistit dostupnost velkých paměťových prostředků. Pokud je výchozí dočasný diskový oddíl malý, naveďte ImageMagick, aby použil jiný oddíl s dostatečným množstvím volného místa.