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.

Previous Next

Початок роботи з 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 використовувати інший розділ із достатньою кількістю вільного місця.

 Українська