![](https://products-qa.fileformat.com/ru/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. Вы можете легко создать постепенное смешение одного или нескольких цветов, используя горизонтальные, вертикальные, круглые или эллиптические формы. Библиотека улучшила градиенты за счет использования нескольких определений, таких как указание направления линейного градиента, определение координат центральной точки радиального градиента, ограничение градиента большей или меньшей областью, чем размеры изображения, и так далее. на. Кроме того, для нелинейных градиентов оттенков серого добавьте -colorspace RGB -colorspace grey перед сохранением вывода.
Создание простого серого градиента через 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 на использование другого раздела с достаточным количеством свободного места.