ImageMagick
کتابخانه منبع C را برای ایجاد و تبدیل تصاویر باز کنید
با استفاده از C API رایگان، تصاویر Bitmap را ایجاد، ویرایش، نوشتن، خواندن و تبدیل کنید. امکان تغییر اندازه، چرخش، آینه، چرخش، تحریف، برش و تبدیل تصاویر در برنامه های C را فراهم می کند.
ImageMagick یک کتابخانه منبع باز است که به توسعه دهندگان نرم افزار این قدرت را می دهد تا قابلیت های پردازش تصویر را در برنامه های C خود قرار دهند. این کتابخانه کراس پلتفرم است و میتواند بهراحتی روی لینوکس، ویندوز، 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 را از طریق ImageMagick به تصویر JPEG تبدیل کنید
#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 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 را راهنمایی کنید تا از پارتیشن دیگری با فضای خالی کافی استفاده کند.