ImageMagick
Atvirojo kodo C biblioteka, skirta kurti ir konvertuoti vaizdus
Kurkite, redaguokite, kurkite, skaitykite ir konvertuokite „Bitmap“ vaizdus naudodami nemokamą C API. Tai leidžia pakeisti, apversti, atspindėti, pasukti, iškraipyti, kirpti ir transformuoti vaizdus C programose.
ImageMagick yra atvirojo kodo biblioteka, suteikianti programinės įrangos kūrėjams galią įtraukti vaizdo apdorojimo galimybes į savo C programas. Biblioteka yra kelių platformų ir gali sklandžiai veikti Linux, Windows, Mac Os X, iOS, Android OS ir daugelyje kitų. Ji apima rastrinių vaizdų skaitymo, rodymo, kūrimo, konvertavimo, modifikavimo ir modifikavimo palaikymą naudojant C kodą.
Viena puiki „ImageMagick“ ypatybė yra galimybė tiksliai ir profesionaliai konvertuoti vaizdus tarp skirtingų pirmaujančių failų formatų. Biblioteka palaiko daugiau nei 200 vaizdo failų formatų, tokių kaip JPEG, PNG, GIF, HEIC, Exif, TIFF, CGM, DPX, EXR, WebP, Postscript, PDF, SVG ir daugelis kitų. Biblioteka taip pat palaiko piešimą, grafiką ir animuotą grafiką.
Biblioteka yra labai daug funkcijų ir apima kai kurių įprastų vaizdo apdorojimo funkcijų palaikymą, pvz., vaizdo dydžio keitimą ir apvertimą, vaizdo atspindėjimą ir pasukimą, iškraipymą, vaizdų transformavimą, vaizdo spalvų reguliavimą, įvairių specialiųjų efektų suliejimą, paryškinimą ar slenkstį, vaizdo gradientus. , gudrus briaunų aptikimas piešia tekstą, linijas, daugiakampius, elipses, naudojant matematinę išraišką ir daug daugiau. Neseniai biblioteka taip pat įtraukė palaikymą teksto ištraukimui iš vaizdų naudojant OCR.
Darbo su ImageMagick pradžia
Klonuokite naujausius šaltinius naudodami šią komandą
Įdiekite „ImageMagick“ per „GitHub“.
git clone https://github.com/ImageMagick/ImageMagick.git
Arba naudokite šią komandą, kad ją įdiegtumėte.
Įdiekite „ImageMagick“ per RPM.
$ rpm -Uvh ImageMagick-libs-7.0.10-60.x86_64.rpm
Konvertuoti vaizdą į kitus formatus
Atvirojo kodo C biblioteka ImageMagick leidžia programuotojams konvertuoti vaizdus į kitus palaikomus failų formatus savo programose. Prieš konvertuodami į kitą formatą, vartotojai turi pateikti formato parametrą. Biblioteka viduje konvertuoja vaizdą į kitus formatus anksčiau, prieš taikydama transformacijas. Biblioteka palaiko konvertavimą į kelis populiarius vaizdo formatus, tokius kaip BMP, CMYK, GIF, JPEG, PBM, PNG, RGB, SVG, TIFF ir XPM formatai. Vienas puikus bibliotekos aspektas yra paprastas naudojimas konvertuojant vaizdą. Tai taip pat suteikia galimybę sumažinti vaizdo dydį ir pritaikyti skirtingus efektus prieš įrašant jį norimu formatu.
Konvertuokite GIF į JPEG vaizdą naudodami „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;
}
Vaizdo gradientų palaikymas naudojant C API
Atvirojo kodo C biblioteka ImageMagick leidžia programinės įrangos kūrėjams sukurti kelių spalvų vaizdo gradientus naudojant C komandas. Galite lengvai sukurti laipsnišką vienos ar kelių spalvų derinį naudodami horizontalias, vertikalias, apskritas arba elipses formas. Biblioteka pagerino gradientus naudodama kelis – apibrėžimus, tokius kaip linijinio gradiento krypties nurodymas, radialinio gradiento centro taško koordinačių nustatymas, gradiento ribojimas iki didesnio ar mažesnio ploto nei vaizdo matmenys ir pan. įjungta. Be to, jei norite naudoti nelinijinius pilkos spalvos gradientus, prieš išsaugodami išvestį pridėkite -colorspace RGB -colorspace gray.
Sukurkite paprastą pilkos spalvos gradientą naudodami 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();
}
Taikykite specialiuosius efektus vaizdams naudodami C
Atvirojo kodo C biblioteka ImageMagick suteikė įvairių tipų efektų pritaikymo vaizdams funkciją. Jis suteikė keletą svarbių funkcijų, tokių kaip suliejimas, paryškinimas, slenkstis, šešėlių kūrimas, formų aptraukimas arba vaizdo atspalvis naudojant kelias C kodo eilutes. Taip pat palaikomi kai kurie specialūs suliejimo efektai, tokie kaip radijo suliejimas ir judesio suliejimas.
Taikykite Tiled Font Effect per 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");
Didelių vaizdų palaikymas
C biblioteka ImageMagick suteikė palaikymą darbui su labai dideliais vaizdais. Tai leidžia kūrėjams atidaryti, skaityti, apdoroti arba rašyti vaizdus iki mega, giga arba tera pikselių dydžio savo vaizdo apdorojimo programose. Biblioteka leidžia pakeisti vaizdo dydį iki ketvirtadalio milijono pikselių kvadratų. Dirbdami su dideliais vaizdais turite įsitikinti, ar yra didelių atminties išteklių. Jei numatytasis laikinas disko skaidinys yra mažas, vadovaukitės ImageMagick, kad galėtumėte naudoti kitą skaidinį, kuriame būtų pakankamai laisvos vietos.