ImageMagick
Open Source C-bibliotek för att skapa och konvertera bilder
Skapa, redigera, komponera, läs och konvertera bitmappsbilder med gratis C API. Det gör det möjligt att ändra storlek, vända, spegla, rotera, förvränga, klippa och omvandla bilder i C-appar.
ImageMagick är ett bibliotek med öppen källkod som ger mjukvaruutvecklare möjlighet att inkludera bildbehandlingsmöjligheter i sina egna C-applikationer. Biblioteket är plattformsoberoende och kan köras smidigt på körningar på Linux, Windows, Mac Os X, iOS, Android OS och många andra. Det har inkluderat stöd för att läsa, visa, skapa, konvertera, modifiera och modifiera rasterbilder med C-kod.
En stor egenskap hos ImageMagick är dess förmåga att korrekt och professionellt konvertera bilder mellan olika ledande filformat. Biblioteket har inkluderat stöd för över 200 bildfilformat som JPEG, PNG, GIF, HEIC, Exif, TIFF, CGM, DPX, EXR, WebP, Postscript, PDF, SVG och många fler. Biblioteket har också tillhandahållit stöd för ritning samt grafik och animerad grafik med lätthet.
Biblioteket är mycket funktionsrikt och har inkluderat stöd för några vanliga bildbehandlingsfunktioner som bildstorleksändring och vändning, bildspegling och rotering, förvrängning, transformering av bilder, justering av bildfärger, applicering av olika specialeffektsoskärpa eller skärpa eller tröskel, bildgradienter , canny edge upptäckt rita text, linjer, polygoner, ellipser, med hjälp av matematiska uttryck och många fler. Nyligen har biblioteket även inkluderat stöd för att extrahera text från bilder med OCR.
Komma igång med ImageMagick
Klona de senaste källorna med följande kommando
Installera ImageMagick via GitHub.
git clone https://github.com/ImageMagick/ImageMagick.git
Eller använd följande kommando för att installera det.
Installera ImageMagick via RPM.
$ rpm -Uvh ImageMagick-libs-7.0.10-60.x86_64.rpm
Konvertera bild till andra format
C-biblioteket med öppen källkod ImageMagick gör det möjligt för programvaruprogrammerare att konvertera bilder till andra filformat som stöds i sina egna appar. Användare måste ange formatparametern innan de konverterar till ett annat format. Biblioteket konverterar internt bilden till andra format tidigare innan transformationerna tillämpas. Biblioteket stöder konvertering till flera populära bildformat som BMP, CMYK, GIF, JPEG, PBM, PNG, RGB, SVG, TIFF och XPM-format. En stor aspekt av biblioteket är användarvänligheten när du konverterar bilden. Det ger också möjlighet att minska storleken på bilden och använda olika effekter innan du skriver den i önskat format.
Konvertera GIF till JPEG-bild via 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;
}
Stöd för bildgradienter med C API
C-biblioteket med öppen källkod ImageMagick gör det möjligt för mjukvaruutvecklare att skapa bildgradienter i flera färger med hjälp av C-kommandon. Du kan enkelt skapa en gradvis blandning av en eller flera färger med hjälp av horisontella, vertikala, cirkulära eller elliptiska former. Biblioteket har förbättrat gradienterna genom att använda flera –definieringar som att specificera riktningen för den linjära gradienten, Identifiera koordinater för centrumpunkten för den radiella gradienten, Begränsa gradienten till ett större eller mindre område än bildens dimensioner, och så på. Dessutom, för icke-linjära gråskalegradienter, lägg till -colorspace RGB -colorspace grå innan du sparar utdata.
Skapa en enkel gråskalegradient via 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();
}
Använd specialeffekter på bilder via C
C-biblioteket med öppen källkod ImageMagick har tillhandahållit funktionalitet för att applicera olika typer av effekter på bilder. Den har tillhandahållit flera viktiga funktioner som suddighet, skärpa, tröskel, skapa skuggor, fjäderformer eller tona en bild med ett par rader C-kod. Vissa speciella oskärpa effekter som radiooskärpa och rörelseoskärpa stöds också.
Använd sida vid sida med teckensnittseffekt via 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");
Stöd för stora bilder
C-biblioteket ImageMagick har gett stöd för att arbeta med mycket stora bilder. Det gör det möjligt för utvecklare att öppna, läsa, bearbeta eller skriva bilder upp till Mega-, Giga- eller Tera-pixelstorlekar i sina egna bildbehandlingsprogram. Biblioteket gör det möjligt att ändra storlek på en bild till en kvarts miljon pixlar i kvadrat. När du arbetar med stora bilder måste du se till att det finns stora minnesresurser. Om den tillfälliga standarddiskpartitionen är liten, vägled ImageMagick att använda en annan partition med tillräckligt mycket ledigt utrymme.