ImageMagick
افتح مكتبة المصدر ج لإنشاء وتحويل الصور
إنشاء الصور النقطية وتحريرها وتكوينها وقراءتها وتحويلها باستخدام واجهة برمجة تطبيقات C المجانية. يسمح بتغيير حجم الصور وقلبها وعكسها وتدويرها وتشويهها وقصها وتحويلها داخل تطبيقات 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
تحويل الصورة إلى تنسيقات أخرى
مكتبة ImageMagick مفتوحة المصدر C تتيح لمبرمجي البرامج تحويل الصور إلى تنسيقات ملفات أخرى مدعومة داخل تطبيقاتهم الخاصة. يحتاج المستخدمون إلى توفير معلمة التنسيق قبل التحويل إلى تنسيق آخر. تقوم المكتبة داخليًا بتحويل الصورة إلى تنسيقات أخرى مسبقًا ، قبل تطبيق التحويلات. تدعم المكتبة التحويل إلى العديد من تنسيقات الصور الشائعة مثل تنسيقات 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
مكتبة ImageMagick مفتوحة المصدر C تتيح لمطوري البرامج إنشاء تدرجات صور بألوان متعددة باستخدام أوامر 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.
توفر مكتبة ImageMagick مكتبة C مفتوحة المصدر وظائف لتطبيق أنواع مختلفة من التأثيرات على الصور. لقد قدم العديد من الوظائف المهمة مثل التمويه ، أو التوضيح ، أو الحد ، أو إنشاء الظلال ، أو الأشكال المتدرجة ، أو صبغ صورة باستخدام سطرين من كود C. هناك بعض تأثيرات التمويه الخاصة مثل تمويه الراديو وضبابية الحركة مدعومة أيضًا.
تطبيق Tiled Font Effect عبر 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 دعمًا للعمل مع الصور الكبيرة جدًا. إنه يمكّن المطورين من فتح الصور أو قراءتها أو معالجتها أو كتابتها بأحجام Mega أو Giga أو Tera-pixel داخل تطبيقات معالجة الصور الخاصة بهم. تتيح المكتبة تغيير حجم الصورة إلى ربع مليون بكسل مربع. أثناء العمل مع الصور الكبيرة ، تحتاج إلى التأكد من توفر موارد ذاكرة كبيرة. إذا كان قسم القرص المؤقت الافتراضي صغيرًا ، فقم بإرشاد ImageMagick لاستخدام قسم آخر به مساحة خالية كافية.