منبع اصلی نوشتار زیر در این لینک قرار دارد

ImageMagic، جادوی تصویر! (قسمت اول)

حتماً وقتی می‌خواهید تصاویر خود را تغییر اندازه دهید از نرم‌افزار Gimp استفاده می‌کنید، حال اگر بخواهید ۱۰، ۲۰، ۳۰، و یا حتی ۱۰۰ تصویر را تغییر اندازه دهید چه؟ باز می‌توانید از Gimp استفاده کنید، ولی با ImageMagic به‌سرعت می‌توانید این کار را انجام دهید. چگونه؟ با ما همراه باشید.

به دو صورت می‌توان تصاویر را تغییر اندازه داد. اولین حالت حالتی است که نسبت طول به عرض موردتوجه قرار بگیرد و دومین حالت حالتی است که ایننسبت موردتوجه قرار نگیرد و تصویر به‌اصطلاح کشیده شود.

به‌عنوان مثال من دو تصویر زیر را یک بار با در نظر گرفتننسبت طول و عرض تغییر اندازه می دهم و بار دیگم می‌کشم (Scale). در سمت چپ تصویر اصلی وجود دارد و در سمت راست تصاویر تغییر اندازه یافته قرار دارند.

resize_terminal terminal resize_dragon dragon
exact_terminal2 terminal exact_dragon2 dragon

برای حالت اول از دستورات زیر استفاده شده است:

convert dragon.gif    -resize 64x64  resize_dragon.gif
convert terminal.gif  -resize 64x64  resize_terminal.gif

برای حالت دوم نیز از دستورات زیر استفاده شده است:

convert dragon.gif    -resize 64x64\!  exact_dragon.gif
  convert terminal.gif  -resize 64x64\!  exact_terminal.gif

که تصاویر با استفاده از دستور Convert و گزینه‌ی -resize به ابعاد ۶۴ در ۶۴ تغییر اندازه داده‌شده‌اند. همان‌طور که می‌بینید تصویر ترمینال که تصویری کوچک است نیز به ابعاد بزرگ‌تر تغییر اندازه داده‌شده است حالا اگر بخواهید این اتفاق برای تصاویر کوچک رخ ندهد و در همان ابعاد اصلی خود بمانند باید دستور را به روش زیر اجرا کنید.

convert dragon.gif    -resize 64x64\>  shrink_dragon.gif
  convert terminal.gif  -resize 64x64\>  shrink_terminal.gif

که خروجی آن مانند تصاویر زیر خواهد بود.

shrink_terminal2 terminal shrink_dragon3 dragon

همچنین اگر علامت < بعد اعداد را به > تبدیل کنید برعکس این عمل رخ خواهد داد.

convert dragon.gif    -resize 64x64\<  shrink_dragon.gif
  convert terminal.gif  -resize 64x64\<  shrink_terminal.gif

shrink_terminal terminal shrink_dragon dragon

دیده‌اید که وقتی می‌خواهید تصاویری را در Gimp تغییر اندازه دهید اگر کنار کادری که اندازه ها را وارد می‌کنیم آن دکمه‌ای که شبیه زنجیر است فعال باشد نصب طول و عرض در نظر گرفته می‌شود و اعداد شما متناسب با آننسبت طول و عرض که می‌خواهید تغییر می‌کند. در اینجا نیز اگر از علامت ^ یا هشتک استفاده کنید چنین اتفاقی روی خواهد داد.

convert dragon.gif    -resize 64x64^  fill_dragon.gif
  convert terminal.gif  -resize 64x64^  fill_terminal.gif

که خروجی کار به صورت زیر خواهد بود.

fill_terminal terminal fill_dragon dragon

حالا اگر بخواهید تصاویر را Crop هم بکنید می‌توانید از  گزینه‌ی  extent استفاده کنید.  به شکل ساده دستور زیر به این سبک نوشته می‌شود.

convert dragon.gif  -extent 64x64 croped_dragon.gif

حال اگر بخواهید که عمل Crop از وسط شروع شود گزینه‌ی gravity را نیز بر روی center می‌گزاریم.

convert dragon.gif -gravity center -extent 64x64 croped_dragon.gif

خروجی دو دستور بالا به صورت زیر هستند:

croped_dragon dragon croped-top_dragon dragon

اگر می‌خواهید تا به‌صورت درصدی مقادیر را اعمال کنید مثلاً اندازه‌ی تصویر را ۵۰ درصد کمتر کنید دستورات زیر را وارد کنید:

convert dragon.gif    -resize 50%  half_dragon.gif
  convert terminal.gif  -resize 50%  half_terminal.gif

که خروجی آن به این شکل خواهد بود.

half_terminal terminal  half_dragon dragon

حتماً لازم نیست که خروجی و ورودی در قالب یکسانی باشند به این شکل که می‌توان ورودی png داد و خروجی jpg دریافت کرد به مثال زیر توجه کنید:

convert rose.jpg -resize 120 rose.png

در مثال فوق اندازه‌ای خاص را داده‌ایم که خودش به‌طور خودکار طول و عرض را با در نظر گرفتن نصب طول به عرض تصویر و عدد داده‌شده تغییرمی دهد. اگر عدد خالی باشد عرض و اگر با x بیاید طول است.

convert rose.jpg -resize x220 rose.png

با دستور rotate هم می‌شود تصویر را چرخاند که برای آن مقدار درجه‌ی چرخش را می‌نویسیم:

convert rose.jpg -rotate 180 rose.png

rose

rose rose rose

حال می‌رسیم به قسمت اصلی که این مقاله را برای آن نوشتم! بله اگر ۱۰۰ فایل را بخواهیم تغییر دهیم چه؟ سؤال ساده است از حلقه‌ی for و دستور convert بهره می‌بریم! به این شکل:

for file in *.gif; do convert $file -resize 60x60 resized-$file; done

حالا دیگر انجام کارهای بهتر و fun تر با خودتان است و دانشتان از Bash Script. برای این قسمت تا همین‌جا بسنده می‌کنم با ما همراه باشید تا در قسمت بعد موارد جالب‌تری را شاهد باشید! حالا قضاوت را به خود شما واگذار می‌کنم که با قرار دادن این گزینه‌ها در کنار هم و به کار بردن قدرت Bash Script چه‌کارها که نمی‌توان انجام داد آن‌هم به سرعتی بسیار بالا بر روی چندین فایل! آیا فتوشاپ می‌تواند چنین کاری انجام دهد؟

3 دیدگاه برای این نوشته:

  1. محمد:
    ۱۷ خرداد ۱۳۹۳ بسیار عالی و کاربردی بود، واقعا خسته نباشی
  2. roka:
    ۱۷ خرداد ۱۳۹۳ نصبت نیستا!!! نسبته :))) متن جالب و مفیدی بود. ممنون ;)
  3. احسان ترک:
    ۱۷ خرداد ۱۳۹۳ مثل اینکه این نصبت!!! دست از سر من ب نمی داره. درستش کردم.

ارسال نظر سریع



برچسب ها : , , , , ,