ImageMagick
Open Source C-bibliotek for å lage og konvertere bilder
Opprett, rediger, komponer, les og konverter bitmapbilder ved hjelp av gratis C API. Den lar deg endre størrelse, snu, speile, rotere, forvrenge, skjære og transformere bilder i C-apper.
ImageMagick er et åpen kildekode-bibliotek som gir programvareutviklere muligheten til å inkludere bildebehandlingsfunksjoner i sine egne C-applikasjoner. Biblioteket er på tvers av plattformer og kan kjøres jevnt på kjører på Linux, Windows, Mac Os X, iOS, Android OS og mange andre. Den har inkludert støtte for lesing, visning, opprettelse, konvertering, modifisering og modifisering av rasterbilder ved hjelp av C-kode.
En flott funksjon ved ImageMagick er dens evne til nøyaktig og profesjonelt konvertere bilder mellom forskjellige ledende filformater. Biblioteket har inkludert støtte for over 200 bildefilformater som JPEG, PNG, GIF, HEIC, Exif, TIFF, CGM, DPX, EXR, WebP, Postscript, PDF, SVG og mange flere. Biblioteket har også gitt støtte for tegning så vel som grafikk og animert grafikk med letthet.
Biblioteket er svært funksjonsrikt og har inkludert støtte for noen vanlige bildebehandlingsfunksjoner som for eksempel endring av størrelse og vending, bildespeiling og rotering, forvrengning, transformering av bilder, justering av bildefarger, bruk av ulike spesialeffekter uskarphet eller skarphet eller terskel, bildegradienter , canny edge-deteksjon tegner tekst, linjer, polygoner, ellipser, ved hjelp av matematiske uttrykk og mange flere. Nylig har biblioteket også inkludert støtte for å trekke ut tekst fra bilder ved hjelp av OCR.
Komme i gang med ImageMagick
Klon de nyeste kildene med følgende kommando
Installer ImageMagick via GitHub.
git clone https://github.com/ImageMagick/ImageMagick.git
Eller bruk følgende kommando for å installere den.
Installer ImageMagick via RPM.
$ rpm -Uvh ImageMagick-libs-7.0.10-60.x86_64.rpm
Konverter bilde til andre formater
Open source C-biblioteket ImageMagick gjør det mulig for programvareprogrammerere å konvertere bilder til andre støttede filformater i sine egne apper. Brukere må oppgi formatparameteren før de konverterer til et annet format. Biblioteket konverterer bildet internt til andre formater tidligere, før transformasjonene tas i bruk. Biblioteket støtter konvertering til flere populære bildeformater som BMP, CMYK, GIF, JPEG, PBM, PNG, RGB, SVG, TIFF og XPM-formater. Et flott aspekt ved biblioteket er brukervennligheten mens du konverterer bildet. Det gir også muligheten til å redusere størrelsen på bildet og bruke forskjellige effekter før du skriver det i ønsket format.
Konverter GIF til JPEG-bilde 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øtte for bildegradienter ved bruk av C API
C-biblioteket med åpen kildekode ImageMagick gjør det mulig for programvareutviklere å lage bildegradienter med flere farger ved hjelp av C-kommandoer. Du kan enkelt lage en gradvis blanding av en eller flere farger ved å bruke horisontale, vertikale, sirkulære eller elliptiske former. Biblioteket har forbedret gradientene ved bruk av flere –definisjoner, som å spesifisere retningen til den lineære gradienten, identifisere koordinatene til midtpunktet for den radielle gradienten, begrense gradienten til et større eller mindre område enn bildedimensjonene, og så på. Dessuten, for ikke-lineære gråtonegradienter, vennligst legg til -colorspace RGB -colorspace grå før du lagrer utdataene.
Lag en enkel gråtonegradient 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();
}
Bruk spesialeffekter på bilder via C
Åpen kildekode C-biblioteket ImageMagick har gitt funksjonalitet for å bruke forskjellige typer effekter på bilder. Den har gitt flere viktige funksjoner som uskarphet, skarphet, terskel, skape skygger, fjærformer eller fargetoning av et bilde ved hjelp av et par linjer med C-kode. Det støttes også noen spesielle uskarphet-effekter som radiouskarphet og bevegelsesuskarphet.
Bruk flislagt skrifteffekt 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øtte for store bilder
C-biblioteket ImageMagick har gitt støtte for arbeid med veldig store bilder. Den gjør det mulig for utviklere å åpne, lese, behandle eller skrive bilder opp til Mega-, Giga- eller Tera-pikselstørrelser i sine egne bildebehandlingsapplikasjoner. Biblioteket gjør det mulig å endre størrelsen på et bilde til en kvart million kvadratiske piksler. Når du arbeider med store bilder, må du sørge for at det er store minneressurser tilgjengelig. Hvis standard midlertidig diskpartisjon er liten, må du veilede ImageMagick til å bruke en annen partisjon med tilstrekkelig mengde ledig plass.