ImageMagick
Biblioteka Open Source C do tworzenia i konwertowania obrazów
Twórz, edytuj, komponuj, czytaj i konwertuj obrazy bitmapowe za pomocą bezpłatnego interfejsu API C . Pozwala zmieniać rozmiar, odwracać, odbijać, obracać, zniekształcać, ścinać i przekształcać obrazy w aplikacjach C.
ImageMagick to biblioteka typu open source, która daje programistom możliwość włączenia możliwości przetwarzania obrazu we własnych aplikacjach C. Biblioteka jest wieloplatformowa i może płynnie działać na systemach Linux, Windows, Mac OS X, iOS, Android OS i wielu innych. Zawiera obsługę czytania, wyświetlania, tworzenia, konwertowania, modyfikowania i modyfikowania obrazów rastrowych za pomocą kodu C.
Jedną wielką cechą ImageMagick jest możliwość dokładnej i profesjonalnej konwersji obrazów między różnymi wiodącymi formatami plików. Biblioteka zawiera obsługę ponad 200 formatów plików graficznych, takich jak JPEG, PNG, GIF, HEIC, Exif, TIFF, CGM, DPX, EXR, WebP, Postscript, PDF, SVG i wiele innych. Biblioteka z łatwością obsługuje również rysowanie, grafikę i animowaną grafikę.
Biblioteka jest bardzo bogata w funkcje i zawiera obsługę niektórych typowych funkcji przetwarzania obrazu, takich jak zmiana rozmiaru i odwracanie obrazu, odbicie lustrzane i obracanie obrazu, zniekształcanie, przekształcanie obrazów, dostosowywanie kolorów obrazu, stosowanie różnych efektów specjalnych rozmycie lub wyostrzanie lub próg, gradienty obrazu , sprytne wykrywanie krawędzi rysuj tekst, linie, wielokąty, elipsy, używając wyrażeń matematycznych i wielu innych. Od niedawna biblioteka zawiera również obsługę wyodrębniania tekstu z obrazów za pomocą OCR.
Pierwsze kroki z ImageMagick
Sklonuj najnowsze źródła za pomocą następującego polecenia
Zainstaluj ImageMagick przez GitHub.
git clone https://github.com/ImageMagick/ImageMagick.git
Lub użyj następującego polecenia, aby go zainstalować.
Zainstaluj ImageMagick przez RPM.
$ rpm -Uvh ImageMagick-libs-7.0.10-60.x86_64.rpm
Konwertuj obraz na inne formaty
Biblioteka Open Source C ImageMagick umożliwia programistom konwertowanie obrazów na inne obsługiwane formaty plików w ich własnych aplikacjach. Użytkownicy muszą podać parametr formatu przed konwersją na inny format. Biblioteka wewnętrznie konwertuje obraz na inne formaty wcześniej, przed zastosowaniem przekształceń. Biblioteka obsługuje konwersję do kilku popularnych formatów graficznych, takich jak BMP, CMYK, GIF, JPEG, PBM, PNG, RGB, SVG, TIFF i XPM. Jednym z wielkich aspektów biblioteki jest łatwość użycia podczas konwersji obrazu. Zapewnia również możliwość zmniejszenia rozmiaru obrazu i zastosowania różnych efektów przed zapisaniem go w żądanym formacie.
Konwertuj GIF na obraz JPEG za 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;
}
Obsługa gradientów obrazu przy użyciu C API
Biblioteka Open Source C ImageMagick umożliwia programistom tworzenie gradientów obrazu o wielu kolorach za pomocą poleceń języka C. Możesz łatwo stworzyć stopniową mieszankę jednego lub wielu kolorów, używając kształtów poziomych, pionowych, okrągłych lub eliptycznych. Biblioteka ulepszyła gradienty poprzez użycie kilku definicji, takich jak określenie kierunku gradientu liniowego, identyfikacja współrzędnych punktu środkowego gradientu promieniowego, ograniczenie gradientu do obszaru większego lub mniejszego niż wymiary obrazu, itd. na. Co więcej, w przypadku nieliniowych gradientów w skali szarości, przed zapisaniem danych wyjściowych należy dodać -colorspace RGB -colorspace grey.
Utwórz prosty gradient w skali szarości za pomocą interfejsu API języka C
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();
}
Zastosuj efekty specjalne do obrazów za pomocą C
Biblioteka Open Source C ImageMagick zapewnia funkcjonalność do stosowania różnych typów efektów do obrazów. Posiada kilka ważnych funkcji, takich jak rozmycie, wyostrzenie, próg, tworzenie cieni, wtapianie kształtów lub zabarwienie obrazu za pomocą kilku linijek kodu C. Obsługiwane są również specjalne efekty rozmycia, takie jak rozmycie radiowe i rozmycie ruchu.
Zastosuj efekt kafelkowej czcionki za pomocą interfejsu API języka C
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");
Obsługa dużych obrazów
Biblioteka C ImageMagick zapewnia obsługę pracy z bardzo dużymi obrazami. Umożliwia programistom otwieranie, odczytywanie, przetwarzanie lub zapisywanie obrazów o rozmiarach do mega-, giga- lub tera-pikseli we własnych aplikacjach do przetwarzania obrazu. Biblioteka umożliwia zmianę rozmiaru obrazu do kwadratu o ćwierć miliona pikseli. Podczas pracy z dużymi obrazami należy zadbać o dostępność dużych zasobów pamięci. Jeśli domyślna tymczasowa partycja dysku jest mała, pomóż ImageMagickowi użyć innej partycji z wystarczającą ilością wolnego miejsca.