ImageMagick ابزاری متنباز متشکل از دستورات خطی برای مدیریت تصاویر دیجیتال است. کاربرد این ابزار در اعمال تغییرات در حجم بالا و تعداد بالا یا اجرا تغییرات دقیق بر روی تصاویر میباشد. توسعه ImageMagick در سال 1987 توسط جان کریستی(John Cristy) که یک مهندس نرمافزار بود، آغاز شد. IMagickجزیی پیشفرض در بسیاری از سیستمهاملهای Linux و BSD است و همچنین به صورت رایگان نیز برای ویندوز، macOS و iOS نیز در دسترس میباشد.
ابزار و ویژگیهای ImageMagick
ابزار موجود در ImageMagick به موارد جداگانه که هر یک دارای دستورات خود هستند، تقسیم میشوند:
- Animate: این دستور مجموعهای از تصاویر را به صورت انیمیشن نمایش میدهد.
- Compare: این دستور امکان آنالیز دو تصویر و تصویرسازی تغییرات ریاضی موجود بین دو تصویر را فراهم میآورد.
- Composite:با متغیر شفافیت یا Transparency امکان ترکیب دو تصویر را ایجاد میکند.
- Conjure: اسکریپتهای نوشته شده در MSL که زبان نوشتاری ImageMagick است را تفسیر و اجرا مینماید.
- Convert: تبدیل تصاویر از یک فرمت به فرمت دیگر. این ابزار همچنین امکان اعمال تغییرات بصری بر روی تصویر همچون برش و محو کردن را دارد.
- Display: یک برنامه مشاهده تصاویر است.
- Identify: این دستور ابعاد، کیفیت و سایر متادیتاهای تصویر را نمایش میدهد.
- Mogrify: امکان تغییر یک تصویر را مشابه با دستور Convert انجام میدهد. اما با این تفاوت که بازنویسی بر روی تصویر اصلی صورت میگیرد.
- montage: این دستور امکان ساخت یک تصویر متشکل از تصاویر کوچکتر را میسر میسازد.
- stream: دادههای مربوط به تصویر را پردازش و در یک فایل ذخیره مینماید. برای شرایط مواجهه با استریم کند یا استریم تصاویر پرحجم کاربرد دارد.
در نسخه 7 ImageMagick این ابزار از طریق دستور Magick قابل دسترسی میباشند. برای مثال برای فراخوانی ابزار Compare از دستور Magick Compare استفاده میشود. همچنین تفسیرگر اسکریپت از طریق دستور magick-script قابل دسترسی است.
نکته قابل ذکر دیگر اینست که دستورات Animate و Display و Import جهت اجرا نیاز به یک سرورX (X Windows System) دارند. در حالتی که از سرور لینوکسی یا BSD استفاده نمیکنید، امکان اجرا دستورات در macOS از طریق XQuartz و در ویندوز از طریق VcXsrv وجود دارد.
چند مثال از دستورات ImageMagick
در ادامه چند دستور را به صورت نمونه بررسی خواهیم کرد:
- دستور زیر باعث کاهش سایز عکس به میزان 25% میشود و آن را با 92% کیفیت با عنوان jpg ذخیره مینماید:
convert myimage.jpg -resize 25% -quality 92 output1.jpg
- با استفاده از دستور –ditort SRT (scale, rotate, translate) مقیاس به 50% تصویر اولیه تبدیل میشود و به 135 درجه ساعتگرد چرخش مییابد.
convert input.jpg -distort SRT .5,135 output2.jpg
- دستور زیر منجر به پیچش 720 درجهای تصویر در کنار افزایش اندازه به 120% میشود:
convert input.jpg -swirl 720 -resize 120% output3.jpg
- دستوری که در ادامه آمده است، متادیتاهای تصویرهای موجود در دایرکتوری فعلی را به شکل زیر نمایش میدهد:
identify *.jpg
متادیتا:
input.jpg[1] JPEG 200×200 200×200+0+0 8-bit sRGB 17.5KB 0.000u 0:00.000
montage.jpg[3] JPEG 268×296 268×296+0+0 8-bit sRGB 26.1KB 0.000u 0:00.000
output1.jpg[4] JPEG 50×50 50×50+0+0 8-bit sRGB 2.99KB 0.000u 0:00.000
output2.jpg[5] JPEG 200×200 100×100+0+0 8-bit sRGB 10.4KB 0.000u 0:00.000
output3.jpg[6] JPEG 240×240 240×240+0+0 8-bit sRGB 37.1KB 0.000u 0:00.000