![](https://products-qa.fileformat.com/uk/image/c/imagemagick/header-image.png)
ImageMagick
Бібліотека C з відкритим кодом для створення та перетворення зображень
Створюйте, редагуйте, створюйте, читайте та конвертуйте растрові зображення за допомогою безкоштовного C API. Він дозволяє змінювати розмір, перевертати, віддзеркалювати, обертати, спотворювати, зрізати та трансформувати зображення в програмах C.
ImageMagick — це бібліотека з відкритим вихідним кодом, яка дає розробникам програмного забезпечення можливість включати можливості обробки зображень у власні програми C. Бібліотека є кросплатформною та може безперебійно запускатися на Linux, Windows, Mac Os X, iOS, Android OS та багатьох інших. Він включає підтримку читання, відображення, створення, перетворення, модифікації та модифікації растрових зображень за допомогою коду C.
Однією чудовою особливістю ImageMagick є його здатність точно та професійно конвертувати зображення між різними провідними форматами файлів. Бібліотека містить підтримку понад 200 форматів файлів зображень, таких як JPEG, PNG, GIF, HEIC, Exif, TIFF, CGM, DPX, EXR, WebP, Postscript, PDF, SVG та багато інших. Бібліотека також забезпечує легку підтримку малювання, а також графіки та анімованої графіки.
Бібліотека дуже багата функціями та включає підтримку деяких поширених функцій обробки зображень, таких як зміна розміру та перевертання зображення, дзеркальне відображення та обертання зображення, викривлення, трансформація зображень, налаштування кольорів зображення, застосування різноманітних спеціальних ефектів, розмиття або підвищення різкості чи порогу, градієнти зображення , вміле виявлення країв, малювати текст, лінії, багатокутники, еліпси, використовуючи математичні вирази та багато іншого. Нещодавно бібліотека також включила підтримку вилучення тексту із зображень за допомогою OCR.
Початок роботи з ImageMagick
Клонуйте останні джерела за допомогою такої команди
Встановіть ImageMagick через GitHub.
git clone https://github.com/ImageMagick/ImageMagick.git
Або скористайтеся наступною командою, щоб встановити його.
Встановіть ImageMagick через RPM.
$ rpm -Uvh ImageMagick-libs-7.0.10-60.x86_64.rpm
Перетворення зображення в інші формати
Бібліотека C із відкритим вихідним кодом ImageMagick дозволяє програмістам конвертувати зображення в інші підтримувані формати файлів у власних програмах. Користувачі повинні надати параметр формату перед перетворенням в інший формат. Бібліотека внутрішньо конвертує зображення в інші формати раніше, перед застосуванням перетворень. Бібліотека підтримує конвертацію в кілька популярних форматів зображень, таких як формати BMP, CMYK, GIF, JPEG, PBM, PNG, RGB, SVG, TIFF і XPM. Одним із чудових аспектів бібліотеки є простота використання під час перетворення зображення. Він також надає можливість зменшувати розмір зображення та застосовувати різні ефекти перед записом у потрібному форматі.
Перетворіть GIF на зображення JPEG за допомогою 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;
}
Підтримка градієнтів зображень за допомогою C API
Бібліотека C із відкритим кодом ImageMagick дозволяє розробникам програмного забезпечення створювати градієнти зображень кількох кольорів за допомогою команд C. Ви можете легко створити поступове змішування одного або кількох кольорів, використовуючи горизонтальні, вертикальні, круглі чи еліптичні форми. Бібліотека покращила градієнти завдяки використанню кількох –defines, таких як визначення напрямку лінійного градієнта, визначення координат центральної точки для радіального градієнта, обмеження градієнта більшою або меншою областю, ніж розміри зображення, тощо на. Крім того, для нелінійних градієнтів сірого додайте -colorspace RGB -colorspace gray перед збереженням результату.
Створіть простий градієнт сірого за допомогою 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();
}
Застосуйте спеціальні ефекти до зображень за допомогою C
Бібліотека C із відкритим вихідним кодом ImageMagick надала функціональність для застосування різних типів ефектів до зображень. Він надав кілька важливих функцій, таких як розмивання, підвищення різкості, порогове значення, створення тіней, розтушовування форм або тонування зображення за допомогою кількох рядків коду C. Також підтримуються деякі спеціальні ефекти розмиття, як-от радіорозмиття та розмиття руху.
Застосуйте ефект плиткового шрифту через 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");
Підтримка великих зображень
Бібліотека C ImageMagick забезпечила підтримку роботи з дуже великими зображеннями. Це дозволяє розробникам відкривати, читати, обробляти або записувати зображення розміром до мега-, гіга- або тера-пікселів у своїх власних програмах обробки зображень. Бібліотека дозволяє змінювати розмір зображення до чверті мільйона квадратних пікселів. При роботі з великими зображеннями необхідно переконатися в наявності великих ресурсів пам'яті. Якщо розділ тимчасового диска за замовчуванням невеликий, порадьте ImageMagick використовувати інший розділ із достатньою кількістю вільного місця.