1. מוצרים
  2.   תמונה
  3.   ImageMagick

ImageMagick

 
 

ספריית קוד C פתוחה ליצירה והמרת תמונות

צור, ערוך, חיבור, קרא והמר תמונות Bitmap באמצעות ממשק API חינמי. זה מאפשר לשנות גודל, להפוך, לשקף, לסובב, לעוות, לגזור ולהמיר תמונות בתוך אפליקציות C.

ה-ImageMagick היא ספריית קוד פתוח שנותנת למפתחי תוכנה את הכוח לכלול יכולות עיבוד תמונה בתוך יישומי C שלהם. הספרייה היא חוצת פלטפורמות ויכולה לפעול בצורה חלקה בריצות על לינוקס, 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. אתה יכול בקלות ליצור שילוב הדרגתי של צבע אחד או מספר צבעים באמצעות צורות אופקיות, אנכיות, מעגליות או אליפטיות. הספרייה שיפרה את השיפועים באמצעות שימוש במספר הגדרות כגון ציון כיוון השיפוע הליניארי, זיהוי קואורדינטות של נקודת המרכז עבור השיפוע הרדיאלי, הגבלת השיפוע לאזור גדול או קטן יותר מממדי התמונה, וכן עַל. יתר על כן, עבור מעברי גווני אפור לא ליניאריים, אנא הוסף -colorspace RGB -colorspace אפור לפני שמירת הפלט.

צור צבע גווני אפור פשוט באמצעות 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 להשתמש במחיצה אחרת עם כמות מספיקה של מקום פנוי.

 עִברִית