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