| GIFSICLE(1) | General Commands Manual | GIFSICLE(1) |
نام (NAME)
gifsicle - ایجاد، ویرایش، دستکاری و استخراج اطلاعات تصاویر و پویانماییهای GIF
خلاصه دستور (SYNOPSIS)
gifsicle [گزینهها، فریمها و نام فایلها]...
توضیحات (DESCRIPTION)
دستور gifsicle تصاویر و پویانماییهای GIF را ایجاد، ویرایش و دستکاری کرده و اطلاعات مربوط به آنها را چاپ میکند.
بهطور معمول، gifsicle فایلهای ورودی GIF را با توجه به گزینههای خط فرمان پردازش کرده و نتیجه را در خروجی استاندارد مینویسد. برای نمونه، گزینه -i به gifsicle میگوید که ورودیهای خود را به صورت درهمبافته (interlaced) پردازش کند:
gifsicle -i < pic.gif > interlaced-pic.gif
به صورت پیشفرض، gifsicle دو یا چند فایل ورودی را در قالب یک پویانمایی کتابچهای (“flipbook”) با یکدیگر ترکیب میکند:
gifsicle pic1.gif pic2.gif pic3.gif > animation.gif
از گزینههایی مانند --delay, --loopcount، و --optimize برای تنظیم دقیق پویانماییهای خود استفاده کنید.
برای اصلاح درجا (in-place) فایلهای GIF، از گزینه --batch استفاده کنید. با --batch، دستور gifsicle بهجای نوشتن فایل جدید در خروجی استاندارد، فایلهای مشخصشده را مستقیماً ویرایش میکند. برای درهمبافتن تمام فایلهای GIF در پوشه جاری، میتوانید این دستور را اجرا کنید:
gifsicle --batch -i *.gif
کاربران تازهکار ممکن است بخواهند مستقیماً به بخش مثالها در انتهای صفحه مراجعه کنند.
نمایه مفاهیم (CONCEPT INDEX)
مفاهیم در سمت راست و گزینههای مرتبط gifsicle در سمت چپ قرار دارند.
- پویانماییها، تغییر دادن
- انتخاب فریم، تغییرات فریم، و غیره
- نحوه پاکسازی (disposal)
- --disposal
- تکرار (looping)
- --loopcount
- بخشهایی از آن
- انتخاب فریمها (frame selections)
- کوچکتر کردن حجم
- --optimize, --colors, --lossy
- سرعت
- --delay
- خروجی معیوب
- --careful
- رنگ پسزمینه
- --background
- رنگها، تغییر دادن
- --change-color, --use-colormap, --dither, --transform-colormap
- کاهش تعداد
- --colors, --dither, --gamma
- توضیحات (Comments)
- --comment
- افزونهها (Extensions)
- --extension, --app-extension, --extension-info
- اندازه فایل
- --optimize, --unoptimize, --colors, --lossy
- تبدیلهای تصویر
- برش زدن (cropping)
- --crop, --crop-transparency
- قرینهسازی (flipping)
- --flip-*
- تغییر اندازه (resizing)
- --resize, --scale
- چرخاندن (rotating)
- --rotate-*
- مقیاس خاکستری (Grayscale)
- --use-colormap
- درهمبافی (Interlacing)
- --interlace
- موقعیتدهی فریمها
- --position
- صفحه نمایش منطقی
- --logical-screen
- انتخاب فریمها
- گزینههای انتخاب فریم (مانند '#0')
- شفافیت (Transparency)
- --transparent
- هشدارها
- --no-warnings
خط فرمان (COMMAND LINE)
خط فرمان gifsicle شامل فایلهای ورودی GIF و گزینهها است. بیشتر گزینهها با یک خط تیره (-) یا علامت مثبت (+) شروع میشوند؛ گزینههای انتخاب فریم که نوعی گزینه به شمار میروند، با علامت هش (#) آغاز میگردند. هر مورد دیگری به عنوان یک فایل ورودی GIF در نظر گرفته میشود.
دستور gifsicle فایلهای ورودی GIF را به ترتیب خوانده و پردازش میکند. اگر هیچ فایل ورودی GIF مشخص نشود، یا نامفایل ویژه ‘-’ داده شود، ورودی از ورودی استاندارد (standard input) خوانده میشود.
دستور gifsicle در صورتی که هیچ خطایی رخ ندهد با کد وضعیت 0 و در غیر این صورت با کد وضعیت 1 خارج میشود.
گزینهها (OPTIONS)
هر گزینه دارای یک فرم کامل و طولانی است: ‘--long-descriptive-name’. نیازی به تایپ کامل نام توصیفی طولانی نیست، بلکه کافی است تا حدی تایپ شود که نام آن بدون ابهام باشد.
برخی گزینهها یک فرم کوتاه نیز دارند: ‘-X’. اگر گزینههای کوتاه آرگومانی دریافت نکنند، میتوانید آنها را با یکدیگر ترکیب کنید: ‘-IIb’ معادل با ‘-I -I -b’ است. اما در مورد گزینههایی که آرگومان میپذیرند باید دقت کرد: ‘-cblah’ به معنی ‘-c blah’ است، نه ‘-c -b -l -a -h’.
بسیاری از گزینهها دارای حالت معکوس نیز هستند: ‘--no-option’ که آن گزینه را غیرفعال میکند. همچنین میتوانید یک گزینه کوتاه ‘-X’ را با نوشتن ‘+X’ غیرفعال کنید.
گزینههای حالت (Mode Options)
گزینههای حالت به gifsicle میگویند چه نوع خروجیای تولید کند. حداکثر یک گزینه حالت میتواند مشخص شود و باید پیش از هر فایل ورودی GIF بیاید.
- --merge, -m
- تمام فایلهای ورودی GIF را در یک فایل با چندین فریم ترکیب کرده و آن فایل را در خروجی استاندارد مینویسد. این حالت پیشفرض است.
- --batch, -b
- هر فایل ورودی GIF را با خواندن و نوشتن مستقیم روی همان فایل، درجا (in place) اصلاح میکند. (فایلهای GIF که از ورودی استاندارد خوانده شوند، در خروجی استاندارد نوشته میشوند.)
- --explode, -e
- برای هر فریم از هر فایل ورودی، یک فایل خروجی GIF جداگانه ایجاد میکند. نام فایلهای خروجی به صورت ‘xxx.000’، ‘xxx.001’ و الی آخر خواهد بود، که در آن ‘xxx’ نام فایل ورودی (یا نام تعیینشده توسط ‘--output’) و پسوند عددی شماره فریم است.
- --explode-by-name, -E
- مشابه --explode، اما فریمهای نامگذاریشده را بهجای ‘xxx.frame-number’ در فایلهایی با نام ‘xxx.name’ ذخیره میکند. فریمها با استفاده از گزینه ‘--name’ نامگذاری میشوند.
گزینههای عمومی (General Options)
گزینههای عمومی، اطلاعات چاپشده توسط gifsicle و محل نوشتن خروجی را کنترل میکنند. گزینههای اطلاعاتی و --verbose را میتوان با ‘--no-X’ غیرفعال کرد.
- --info, -I
- توضیحات خوانا برای انسان از هر فایل ورودی GIF را در خروجی استاندارد، یا فایلی که با -o مشخص کردهاید، چاپ میکند. این گزینه خروجی عادی را غیرفعال میکند و نمیتوان آن را با گزینههای حالت مانند --batch ترکیب کرد. با این حال، اگر دو بار گزینه --info یا -I را مشخص کنید، اطلاعات در خروجی خطای استاندارد (stderr) چاپ شده و خروجی عادی نیز طبق روال تولید میشود.
- --color-info, --cinfo
- مشابه --info، اما علاوه بر آن، اطلاعاتی درباره جدول رنگهای (colormap) فایلهای ورودی نیز چاپ میکند.
- --extension-info, --xinfo
- مشابه --info، اما افزونههای ناشناخته GIF را در قالبی شبیه به hexdump(1) چاپ میکند.
- --size-info, --sinfo
- مشابه --info، اما اطلاعات مربوط به اندازه تصاویر فشردهشده را نیز چاپ میکند.
- --help, -h
- اطلاعات نحوه استفاده از دستور را چاپ کرده و خارج میشود.
- -o file
- --output file
- خروجی را به file ارسال میکند. نام ویژه ‘-’ به معنی خروجی استاندارد است.
- --verbose, -V
- اطلاعات روند پیشرفت (فایلهای خواندهشده و نوشتهشده) را در خروجی خطای استاندارد چاپ میکند.
- --no-warnings, -w
- از نمایش تمام پیامهای هشدار جلوگیری میکند.
- --no-ignore-errors
- در صورت مواجهه با یک فایل GIF دارای خطاهای جدی، با کد وضعیت 1 خارج میشود. رفتار پیشفرض این است که تلاش برای ادامه پردازش انجام شود.
- --version
- شماره نسخه و اطلاعات کوتاهی در مورد عدم ضمانت را چاپ کرده و خارج میشود.
- --careful
- فایلهای GIF کمی بزرگتری مینویسد که از بروز باگ در برخی پیادهسازیهای دیگر GIF جلوگیری میکند. برخی نسخههای جاوا و اینترنت اکسپلورر قادر به نمایش صحیح فایلهای کمحجم و بهینهای که Gifsicle تولید میکند نیستند. اگر در نمایش یک تصویر خاص مشکل دارید، از گزینه --careful استفاده کنید.
- --conserve-memory
- مصرف حافظه را به بهای افزایش زمان پردازش کاهش میدهد. این گزینه هنگام پردازش فایلهای حجیم GIF روی رایانههایی با حافظه محدود مفید است. برای غیرفعال کردن از --no-conserve-memory استفاده کنید.
- --nextfile
- امکان الحاق چند تصویر GIF پشت سر هم را در فایلهای ورودی فراهم میکند. اگر یک نامفایل چند بار در خط فرمان تکرار شود، gifsicle در هر بار یک تصویر جدید از آن فایل میخواند. این گزینه به اسکریپتها کمک میکند از ایجاد فایلهای موقت بینیاز شوند. برای نمونه، برای ساخت یک فایل متحرک GIF با سه فریم و تاخیرهای متفاوت، میتوانید دستور "gifsicle --nextfile -d10 - -d20 - -d30 - > out.gif" را اجرا کرده و سه تصویر GIF را به ترتیب در ورودی استاندارد gifsicle بنویسید.
- --multifile
- مشابه --nextfile، اما تا جای ممکن تصاویر GIF بیشتری را از هر فایل میخواند. این گزینه برای اسکریپتها در نظر گرفته شده است. برای نمونه، جهت ترکیب تعداد نامشخصی تصویر GIF در قالب یک پویانمایی، دستور "gifsicle --multifile - > out.gif" را اجرا کرده و تصاویر GIF را به ترتیب در ورودی استاندارد gifsicle بنویسید. هرگونه انتخاب فریم تنها روی آخرین فایل در زنجیره اعمال خواهد شد.
انتخاب فریمها (Frame Selections)
یک عبارت انتخاب فریم به gifsicle میگوید که از کدام فریمهای فایل ورودی جاری استفاده کند. این عبارات تنها برای پویانماییها کاربرد دارند، زیرا فایلهای GIF غیر متحرک تنها یک فریم دارند. ساختارهای مجاز برای تعیین فریمها عبارتند از:
- #num
- فریم num را انتخاب میکند. (نخستین فریم ‘#0’ است. اعداد منفی از آخرین فریم به سمت عقب شمارش میشوند، که آخرین فریم ‘#-1’ است.)
- #num1-num2
- فریمهای num1 تا num2 را انتخاب میکند.
- #num1-
- فریمهای num1 تا آخرین فریم را انتخاب میکند.
- #name
- فریم با نام name را انتخاب میکند.
نویسه ‘#’ در بسیاری از پوستهها (shells) معنای ویژهای دارد، بنابراین عموماً باید آن را داخل نقلقول (کوتیشن) قرار دهید.
برای نمونه،
gifsicle happy.gif "#0"
gifsicle happy.gif "#0-2"
gifsicle happy.gif "#-1-0"
عملیاتی که روی فریمهای انتخابشده انجام میشود به حالت جاری بستگی دارد. در حالت ادغام (merge)، فقط فریمهای انتخابشده در فایل خروجی ادغام میشوند. در حالت دستهای (batch)، فقط فریمهای انتخابشده اصلاح میشوند و سایر فریمها دستنخورده باقی میمانند. در حالت تفکیک (explode)، تنها فریمهای انتخابشده به فایلهای GIF خروجی مجزا تفکیک میشوند.
گزینههای تغییر فریم (Frame Change Options)
گزینههای تغییر فریم، فریمهای جدیدی را در یک پویانمایی درج کرده و یا فریمهای موجود را جایگزین یا حذف میکنند. انجام برخی کارها -- برای نمونه تغییر یک فریم در یک پویانمایی -- با گزینههای انتخاب فریم دشوار است، اما با گزینههای تغییر فریم به سادگی انجام میشود.
- --delete frames [frames...]
- فریمهای مشخصشده در frames را از فایل GIF ورودی حذف میکند.
- --insert-before frame other-GIFs
- فایلهای other-GIFs را پیش از frame در فایل GIF ورودی درج میکند.
- --append other-GIFs
- فایلهای other-GIFs را به انتهای فایل GIF ورودی پیوست (append) میکند.
- --replace frames other-GIFs
- فریمهای frames را از فایل GIF ورودی با other-GIFs جایگزین میکند.
- --done
- مجموعه تغییرات فریم جاری را تکمیل و نهایی میکند.
آرگومانهای frames همان گزینههای انتخاب فریم هستند (بخش بالا را ببینید). این آرگومانها همیشه به فریمهای فایل GIF ورودی اصلی اشاره دارند. بنابراین اگر ‘a.gif’ دارای ۳ فریم و ‘b.gif’ دارای یک فریم باشد، این دستور:
gifsicle a.gif --delete "#0" --replace "#2" b.gif
آرگومانهای other-GIFs شامل هر تعداد فایل ورودی GIF و گزینههای انتخاب فریم هستند. این تصاویر در حالت ادغام (merge) ترکیب شده و به فایل GIF ورودی افزوده میشوند. تاثیر other-GIFs تا گزینه تغییر فریم بعدی ادامه مییابد؛ بنابراین این دستور فریم اول ‘in.gif’ را با ادغام ‘a.gif’ و ‘b.gif’ جایگزین میکند:
gifsicle -b in.gif --replace "#0" a.gif b.gif
با این حال، دستور زیر فریم اول ‘in.gif’ را با ‘a.gif’ جایگزین کرده و سپس ‘b.gif’ را به صورت جداگانه پردازش میکند:
gifsicle -b in.gif --replace "#0" a.gif --done b.gif
هشدار: نباید همزمان از گزینههای انتخاب فریم و گزینههای تغییر فریم روی یک فایل GIF ورودی یکسان استفاده کنید.
گزینههای تصویر (Image Options)
گزینههای تصویر، تصاویر ورودی را اصلاح میکنند -- برای نمونه با تغییر درهمبافی (interlacing)، شفافیت (transparency) و برش (cropping). گزینههای تصویر دارای سه فرم هستند: ‘--X’، ‘--no-X’، و ‘--same-X’. فرم ‘--X’ مقداری را برای آن ویژگی انتخاب میکند، فرم ‘--no-X’ ویژگی را خاموش میکند، و فرم ‘--same-X’ بدان معناست که مقدار ویژگی از هر ورودی کپی میشود. حالت پیشفرض همیشه ‘--same-X’ است. برای نمونه، --background="#0000FF" رنگ پسزمینه را روی آبی تنظیم میکند، --no-background رنگ پسزمینه را خاموش میکند (با تنظیم آن روی 0)، و --same-background از رنگهای پسزمینه موجود در تصاویر ورودی استفاده میکند. میتوانید هر گزینه را چندین بار مشخص کنید؛ برای نمونه،
gifsicle -b -O2 -i a.gif --same-interlace b.gif c.gif
- -B color
- --background color
- رنگ پسزمینه فایل GIF خروجی را روی color تنظیم میکند. آرگومان میتواند همان فرمهای ذکرشده در گزینه --transparent در ادامه را داشته باشد.
- --crop x1,y1-x2,y2
- --crop x1,y1+widthxheight
- فریمهای ورودی بعدی را به یک ناحیه مستطیلی کوچکتر برش میدهد. گوشه بالا-چپ این مستطیل (x1,y1) است؛ میتوانید یا گوشه پایین-راست، (x2,y2)، یا عرض و ارتفاع مستطیل را مشخص کنید. در فرم x1,y1+widthxheight، مقادیر width و height میتوانند صفر یا منفی باشند. بُعد صفر به این معنی است که ناحیه برش تا لبه تصویر امتداد مییابد؛ بُعد منفی ناحیه برش را به همان تعداد پیکسل از لبه تصویر به سمت داخل میآورد. برای نمونه، --crop 2,2+-2x-2 به اندازه ۲ پیکسل از هر طرف تصویر ورودی برش میزند. برش زدن پیش از هرگونه چرخش، قرینهسازی، تغییر اندازه یا موقعیتدهی اعمال میشود.
- --crop-transparency
- هرگونه حاشیه شفاف را از فریمهای ورودی بعدی برش میدهد. این عمل پس از هر برشی که با گزینه --crop مشخص شده باشد رخ میدهد. این گزینه روی تصاویر ورودی خام کار میکند؛ بنابراین برای نمونه، هنوز هیچ گزینه شفافیتی روی آنها اعمال نشده است.
- --flip-horizontal
- --flip-vertical
- فریمهای بعدی را به صورت افقی یا عمودی قرینه (flip) میکند.
- -i
- --interlace
- درهمبافی (interlacing) را فعال میکند.
- -S widthxheight
- --logical-screen widthxheight
- صفحه نمایش منطقی (logical screen) خروجی را روی widthxheight تنظیم میکند. --no-logical-screen صفحه نمایش منطقی خروجی را به اندازهای بزرگ تنظیم میکند که تمام فریمهای خروجی را در بر گیرد، در حالی که --same-logical-screen صفحه نمایش منطقی خروجی را به اندازهای بزرگ تنظیم میکند که تمام صفحات نمایش منطقی ورودی را شامل شود. --screen مترادفی برای --logical-screen است.
- -p x,y
- --position x,y
- موقعیت فریمهای بعدی را روی (x,y) تنظیم میکند. --no-position به معنای --position 0,0. است. به طور معمول، --position x,y هر فریم بعدی را دقیقاً در x,y قرار میدهد. با این حال، اگر یک پویانمایی کامل ورودی داده شود، x,y به عنوان موقعیت کل آن پویانمایی در نظر گرفته میشود.
- --rotate-90
- --rotate-180
- --rotate-270
- فریمهای بعدی را به اندازه ۹۰، ۱۸۰ یا ۲۷۰ درجه میچرخاند. --no-rotate هرگونه چرخش را خاموش میکند.
- -t color
- --transparent color
- رنگ color را در فریمهای بعدی شفاف (transparent) میکند. Color میتواند یک شاخص جدول رنگ (0-255)، یک مقدار رنگ در مبنای شانزده (مانند "#FF00FF" برای سرخابی)، یا مقادیر قرمز، سبز و آبی جداشده با اسلش یا کاما (هر کدام بین 0 تا 255) باشد.
گزینههای افزونه (Extension Options)
گزینههای افزونه، اطلاعات غیربصری را به فایل GIF خروجی اضافه میکنند. این موارد شامل نامها، توضیحات و افزونههای عمومی است.
- --app-extension app-name extension
- یک افزونه برنامه کاربردی با نام app-name و مقدار extension به فایل GIF خروجی اضافه میکند. --no-app-extensions افزونههای برنامه کاربردی را از تصاویر ورودی حذف میکند.
- -c text
- --comment text
- یک توضیح (کامنت)، text، به فایل GIF خروجی میافزاید. این توضیح پیش از فریم بعدی در جریان تصویر قرار خواهد گرفت. --no-comments توضیحات را از تصاویر ورودی حذف میکند.
- --extension number extension
- یک افزونه با شماره number و مقدار extension به فایل GIF خروجی اضافه میکند. Number میتواند در مبنای ده، هشت، شانزده، یا یک کاراکتر منفرد مانند ‘n’ باشد که مقدار ASCII آن استفاده میشود. --no-extensions (یا +x) افزونهها را از تصاویر ورودی حذف میکند.
- -n text
- --name text
- نام فریم بعدی را روی text تنظیم میکند. این نام به عنوان یک افزونه در فایل GIF خروجی ذخیره میشود (شماره افزونه 0xCE، و به دنبال آن کاراکترهای نام فریم). --no-names افزونههای نام را از تصاویر ورودی حذف میکند.
گزینههای پویانمایی (Animation Options)
گزینههای پویانمایی روی کل پویانماییهای GIF یا فریمهای منفرد درون پویانمایی اعمال میشوند. همانند گزینههای تصویر، بیشتر گزینههای پویانمایی دارای سه فرم هستند: ‘--X’، ‘--no-X’، و ‘--same-X’، و میتوانید گزینههای پویانمایی را چندین بار مشخص کنید؛ برای نمونه،
gifsicle -b a.gif -d50 "#0" "#1" -d100 "#2" "#3"
- -d time
- --delay time
- تاخیر بین فریمها را بر حسب صدم ثانیه روی time تنظیم میکند.
- -D method
- --disposal method
- روش امحا/پاکسازی (disposal method) را برای فریمهای بعدی روی method تنظیم میکند. روش پاکسازی یک فریم مشخص میکند که نمایشدهنده چگونه باید آن فریم را هنگام نمایش فریم بعدی حذف کند. Method میتواند عددی بین 0 تا 7 باشد (اگرچه معمولاً تنها اعداد 0 تا 3 معنا دارند)، یا یکی از نامهای زیر: none (فریم را برای ساخت فریمهای بعدی روی آن، قابل مشاهده باقی میگذارد)، asis (مشابه "none")، background (یا bg) (فریم را با رنگ پسزمینه جایگزین میکند)، یا previous (فریم را با ناحیه فریم نمایشدادهشده قبلی جایگزین میکند). --no-disposal به معنای --disposal=none است.
- -l[count]
- --loopcount[=count]
- افزونه
تکرار
نتاسکیپ (Netscape
loop extension) را روی count
تنظیم
میکند. Count
یک عدد صحیح
است، یا forever
برای تکرار
بینهایت.
اگر گزینه
--loopcount را
بدون تعیین
count مشخص
کنید، Gifsicle از
مقدار forever
استفاده
خواهد کرد.
گزینه
--no-loopcount (حالت
پیشفرض)
تکرار را
غیرفعال
میکند.
تعداد حلقه (loop count) را یک واحد کمتر از تعداد دفعاتی که میخواهید پویانمایی اجرا شود تنظیم کنید. یک پویانمایی با --no-loopcount هر فریم را یک بار نمایش میدهد؛ --loopcount=1 یک بار تکرار میشود و در نتیجه هر فریم دو بار نمایش داده میشود؛ و به همین ترتیب. توجه داشته باشید که --loopcount=0 معادل --loopcount=forever است، نه --no-loopcount.
- -O[level]
- --optimize[=level]
- تلاش میکند اندازه فایل پویانماییهای GIF را کاهش دهد. Level میزان بهینهسازی را مشخص میکند؛ سطوح بالاتر زمان بیشتری میبرند اما ممکن است نتایج بهتری به همراه داشته باشند. در حال حاضر سه سطح وجود دارد:
- -O1
- فقط بخش تغییریافته از هر تصویر را ذخیره میکند. این حالت پیشفرض است.
- -O2
- فقط بخش تغییریافته از هر تصویر را ذخیره کرده و از شفافیت استفاده میکند.
- -O3
- چندین روش بهینهسازی را آزمایش میکند (معمولاً کندتر است، اما گاهی نتایج بهتری دارد).
سایر فلگهای بهینهسازی کنترل دقیقتری ارائه میدهند.
- -Okeep-empty
- فریمهای شفاف خالی را حفظ میکند (به صورت پیشفرض این فریمها حذف میشوند).
همچنین ممکن است به سایر گزینهها برای کاهش حجم فایلهای GIF علاقهمند باشید، مانند -k، --lossy، و --no-extensions. توجه داشته باشید که گزینه -O کاهش قطعی اندازه فایل را تضمین نمیکند و در موارد نادری حتی -O3 ممکن است حجم فایل را افزایش دهد.
- -U
- --unoptimize
- پویانماییهای
GIF را برای
ویرایش
آسان به
حالت
غیربهینه
(unoptimized)
برمیگرداند.
پویانماییهای GIF معمولاً بهینهسازی میشوند (گزینه --optimize را ببینید) تا حجم آنها کمتر شده و سریعتر بارگذاری شوند، که متأسفانه ویرایش آنها را دشوار میکند. گزینه --unoptimize فایلهای ورودی بهینهشده GIF را به حالت غیربهینه درمیآورد، به گونهای که هر فریم نمایانگر دقیق همان چیزی است که کاربر در آن لحظه از پویانمایی مشاهده میکند.
گزینههای تبدیل تصویر (Image Transformation Options)
گزینههای تبدیل تصویر هنگام خواندن یا نوشتن، روی کل فایلهای GIF اعمال میشوند. این گزینهها را میتوان با ‘--no-option’ غیرفعال کرد.
- --resize widthxheight
- اندازه فایل GIF خروجی را به ابعاد مشخصشده width و height تغییر میدهد. اگر width یا height یک خط زیرین ‘_’ باشد، آن بُعد به گونهای محاسبه و انتخاب میشود که نسبت تصویر (aspect ratio) بدون تغییر باقی بماند. تغییر اندازه پس از ترکیب تمام فریمهای ورودی و پیش از بهینهسازی رخ میدهد. تغییر اندازه از ابعاد صفحه نمایش منطقی استفاده میکند؛ اگر جریان ورودی دارای یک صفحه نمایش منطقی غیرمعمول باشد (بسیاری از برنامههای نمایش GIF صفحات منطقی را نادیده میگیرند)، ممکن است بخواهید از گزینه --no-logical-screen (یا +S) برای بازنشانی آن استفاده کنید تا gifsicle بهجای آن از ابعاد واقعی تصویر بهره ببرد. همچنین گزینه --resize-method را ببینید.
- --resize-width width
- --resize-height height
- اندازه را با حفظ نسبت تصویر به یک عرض یا ارتفاع معین تغییر میدهد. این معادل --resize widthx_ یا --resize _xheight است.
- --resize-fit widthxheight
- --resize-touch widthxheight
- اندازه فایل GIF خروجی را به گونهای تغییر میدهد که درون یک مستطیل با ابعاد widthxheight جای گیرد. نسبت ابعاد تصویر دستنخورده باقی میماند. گزینه --resize-fit تنها تصویر را کوچک میکند -- اگر تصویر GIF از قبل در ابعاد مستطیل جا بگیرد، هیچ تغییر اندازهای صورت نمیپذیرد. گزینه --resize-touch ممکن است تصویر را کوچک یا بزرگ کند؛ به گونهای که فایل GIF خروجی دارای عرض width، ارتفاع height، یا هر دو باشد. هر کدام از مقادیر width یا height میتواند یک خط زیرین ‘_’ باشد، که در این صورت آن بُعد بدون محدودیت در نظر گرفته میشود.
- --resize-fit-width width
- --resize-fit-height height
- --resize-touch-width width
- --resize-touch-height height
- مشابه گزینههای --resize-fit و --resize-touch، اما محدودیت را تنها روی یک بُعد اعمال میکند.
- --resize-geometry geometry
- تغییر اندازه به مشخصات هندسی (geometry) همانطور که در ابزارهای ImageMagick و GraphicsMagick استفاده میشود. مقدار Geometry باید با الگوی ‘widthxheight[%][!][^][<][>]’ مطابقت داشته باشد، که در آن width و height اعداد صحیح (یا خط زیرین، ‘_’، که آن بُعد را بدون محدودیت میگذارد) هستند. پسوندها دارای معانی زیر میباشند:
- %
- ابعاد را به عنوان درصد از اندازه فعلی در نظر میگیرد.
- !
- بدون توجه به نسبت تصویر اصلی، اندازه را دقیقاً به ابعاد دادهشده تغییر میدهد.
- <
- تنها در صورتی اندازه را تغییر میدهد که تصویر کوچکتر از ابعاد مشخصشده باشد.
- >
- تنها در صورتی اندازه را تغییر میدهد که تصویر بزرگتر از ابعاد مشخصشده باشد.
- ^
- ابعاد دادهشده را بهجای حداکثر، به عنوان مقادیر حداقل در نظر میگیرد.
- --scale Xfactor[xYfactor]
- عرض و ارتفاع فایل GIF خروجی را با ضرایب Xfactor و Yfactor مقیاسبندی میکند. اگر Yfactor مشخص نشود، مقدار پیشفرض آن همان Xfactor خواهد بود. مقیاسبندی پس از ترکیب تمام فریمهای ورودی و پیش از بهینهسازی اعمال میشود.
- --resize-method method
- روشی را که برای تغییر اندازه تصاویر استفاده میشود تعیین میکند. روش ‘sample’ بسیار سریع اجرا میشود، اما هنگام کوچک کردن تصاویر خروجی نویزدار تولید میکند. روش ‘mix’ مقداری کندتر است، اما خروجیهای بسیار بهتری ارائه میدهد. روش پیشفرض در حال حاضر ‘mix’ است.
جزئیات: تفاوت روشهای تغییر اندازه بیشتر هنگام کوچک کردن تصاویر مشخص میشود. روش ‘sample’ یک نمونهبردار نقطهای است: هر موقعیت پیکسل در تصویر خروجی دقیقاً به یک موقعیت پیکسل در تصویر ورودی متناظر میشود. هنگام کوچک کردن، ردیفها و ستونهای کامل از ورودی حذف میشوند. سایر روشها از تمام پیکسلهای ورودی استفاده میکنند که بهطور کلی تصاویر بهتری تولید میکند. روش ‘box’ که یک نمونهبردار جعبهای است، نسبت به فیلترهای پیچیدهتر سریعتر بوده و نتایج شفافتری ارائه میدهد، اما هنگام کاهش جزئی اندازه تصویر در یک بُعد، ناهنجاریهایی ظاهر میشود (برخی از پیکسلهای خروجی دقیقاً متناظر با ۱ ردیف یا ستون ورودی خواهند بود، در حالی که برخی دیگر متناظر با ۲ ردیف یا ستون ورودی میشوند). روش ‘mix’ یک درونیاب دوخطی (bilinear) کامل است؛ این روش کندتر بوده و تصاویری کمی محوتر تولید میکند، اما از ناهنجاریها جلوگیری مینماید.
دستور Gifsicle همچنین از نمونهبردارهای مجدد پیچیدهتر نیز پشتیبانی میکند، از جمله نمونهبرداری مکعبی Catmull-Rom (روش ‘catrom’)، فیلتر Mitchell-Netravali (روش ‘mitchell’)، فیلتر Lanczos با ۲ لوب (‘lanczos2’) و فیلتر Lanczos با ۳ لوب (‘lanczos3’). این فیلترها باز هم کندتر هستند، اما میتوانند نتایج شفافتر و بسیار بهتری ارائه دهند.
- --resize-colors n
- به Gifsicle اجازه میدهد هنگام تغییر اندازه تصاویر، رنگهای میانی (intermediate colors) اضافه کند. معمولاً الگوریتمهای تغییر اندازه Gifsicle از پالت رنگ تصاویر ورودی بدون تغییر استفاده میکنند. هنگام کوچک کردن تصاویری با تعداد رنگ بسیار کم (مانند تصاویر کاملاً سیاهوسفید)، افزودن رنگهای میانی میتواند کیفیت نتیجه را بهبود بخشد. برای نمونه: --resize-colors 64 به Gifsicle اجازه میدهد برای تصاویری که کمتر از ۶۴ رنگ ورودی دارند، رنگهای میانی اضافه کند.
گزینههای رنگ (Color Options)
گزینههای رنگ هنگام خواندن یا نوشتن، روی کل فایلهای GIF اعمال میشوند. این گزینهها را میتوان با ‘--no-option’ غیرفعال کرد.
- -k num
- --colors num
- تعداد
رنگهای
متمایز در
هر فایل GIF
خروجی را به
num یا کمتر
کاهش
میدهد. Num
باید بین ۲
تا ۲۵۶
باشد. از
این گزینه
میتوان
برای کاهش
حجم
فایلهای
خروجی GIF یا
حذف هرگونه
جدول رنگ
محلی
استفاده
کرد.
به طور معمول، گروهی تطبیقپذیر از رنگها از روی جدول رنگ موجود انتخاب میشود. میتوانید این فرآیند را با گزینه --color-method یا با ارائه جدول رنگ اختصاصی خود از طریق گزینه --use-colormap تغییر دهید. در صورتی که در تصویر شفافیت وجود داشته باشد، ممکن است Gifsicle نیاز به افزودن یک رنگ دیگر (در مجموع num+1 رنگ) داشته باشد.
- --color-method method
- نحوه انتخاب یک جدول رنگ کوچکتر را تعیین میکند. ‘diversity’، حالت پیشفرض، همان الگوریتم تنوع برنامه xv(1) است که زیرمجموعه دقیقی از رنگهای موجود را به کار میبرد و عموماً نتایج خوبی به همراه دارد. ‘blend-diversity’ روشی اصلاحشده از این الگوریتم است: برخی مقادیر رنگ از ترکیب گروههایی از رنگهای موجود به دست میآیند. ‘median-cut’ الگوریتم برش میانه (median cut) است که توسط Heckbert تشریح شده است. --method مترادفی برای --color-method است.
- -f
- --dither[=method]
- هنگامی که
--dither فعال
باشد و جدول
رنگ تغییر
کند، از
ترکیب
رنگها
برای
شبیهسازی
رنگهای
ناموجود
استفاده
میشود. این
کار ظاهر
تصویر را
بهتر
میکند اما
حجم فایل را
افزایش
داده و
میتواند
باعث ایجاد
ناهنجاری
در
پویانمایی
شود؛
بنابراین
به طور
پیشفرض
غیرفعال
است.
میتوانید روش ترام/پخش رنگ (dithering) را با آرگومان اختیاری method مشخص کنید. روش پیشفرض، ‘floyd-steinberg’، از روش انتشار خطای فلوید-اشتاینبرگ (Floyd-Steinberg) استفاده میکند. این روش معمولاً بهترین ظاهر را ایجاد میکند، اما به دلیل تفاوت در انتخابهای ترام از فریمی به فریم دیگر، میتواند باعث ایجاد ناهنجاری در پویانماییها شود. روش ‘atkinson’ از انتشار خطای اتکینسون (Atkinson) که گونهای از فلوید-اشتاینبرگ است بهره میبرد؛ این روش الگوی ترام محلیتری ارائه میدهد که میتواند برای تصاویری با سطوح رنگی یکدست و بزرگ مفید باشد. همچنین Gifsicle از روشهای ترام منظم (ordered dithering) نیز پشتیبانی میکند که از ناهنجاریهای پویانمایی جلوگیری مینمایند. روش ‘ro64’ از یک الگوی بزرگ و شبهتصادفی استفاده میکند و عموماً نتایج خوبی ارائه میدهد. روشهای ‘o3’، ‘o4’، و ‘o8’ از الگوهای کوچکتر و منظمتر استفاده میکنند. روش ‘ordered’ یک الگوریتم ترام منظم مناسب را انتخاب مینماید. برای ایجاد جلوههای ویژه، روشهای ترام نیمسایه (halftone) شامل ‘halftone’، ‘squarehalftone’، و ‘diagonal’ را امتحان کنید.
برخی روشها پارامترهای اختیاری را با علامت کاما میپذیرند. روشهای نیمسایه اندازه سلول و محدودیت رنگ دریافت میکنند: ‘halftone,10,3’ سلولهای نیمسایه با عرض ۱۰ پیکسل ایجاد میکند که در آن هر سلول تا حداکثر ۳ رنگ به کار میبرد.
- --gamma gamma
- فضای رنگ یا تصحیح گاما را روی gamma تنظیم میکند؛ این مقدار میتواند یک عدد حقیقی، ‘srgb’ (حالت پیشفرض)، یا ‘oklab’ باشد. بهطور کلی، اعداد بزرگتر سایهها را برجستهتر و اعداد کوچکتر بخشهای روشن را نمایانتر میکنند. فضای رنگ پیشفرض همان sRGB استاندارد است که معمولاً بهخوبی عمل میکند (اثرات آن مشابه --gamma=2.2 است). دستور Gifsicle هنگام انتخاب پالت رنگ (--colors)، ترام دادن (--dither)، و محاسبه خطاهای رنگی در فشردهسازی همراه با اتلاف (--lossy) از تصحیح گاما استفاده میکند.
- --lossy[=lossiness]
- رنگهای
تصویر را
برای کاهش
حجم فایل
خروجی به
قیمت ایجاد
مقداری
نویز و
ناهنجاری
تغییر
میدهد.
مقدار Lossiness
میزان
ناهنجاریهای
مجاز را
مشخص
میکند؛
مقادیر
بالاتر
میتواند
منجر به
کاهش بیشتر
حجم فایل
شود، اما
ناهنجاریهای
بیشتری
پدید
میآورد.
مقدار
پیشفرض lossiness
برابر با ۲۰
است.
دستور Gifsicle از فضای رنگی تعیینشده توسط --gamma برای ارزیابی ناهنجاریها استفاده میکند. اگر از عملکرد --lossy رضایت ندارید، فضای رنگ دیگری مانند --gamma=1 را امتحان کنید.
- --change-color color1 color2
- رنگ color1 را به color2 در فایلهای GIF ورودی بعدی تغییر میدهد. (آرگومانهای color همان فرمهای ذکرشده در گزینه -t را دارند.) میتوانید با درج چندین باره این گزینه، چندین رنگ را تغییر دهید. تغییرات رنگ با یکدیگر تداخل ندارند، بنابراین میتوانید با خیالی آسوده جای دو رنگ را با ‘--change-color color1 color2 --change-color color2 color1’ جابهجا کنید. تمام تغییرات هنگام خواندن فایل GIF ورودی اعمال میشوند. گزینه --no-change-color تمامی تغییرات رنگ را لغو میکند.
- --transform-colormap command
- مقدار Command باید یک دستور پوسته باشد که از ورودی استاندارد میخواند و در خروجی استاندارد مینویسد. هر جدول رنگ در فایل GIF خروجی به فرمت متنی جدول رنگ (بخش --use-colormap در زیر را ببینید) ترجمه شده و به این دستور ارسال (pipe) میشود. خروجیای که دستور تولید میکند (که آن هم باید با فرمت متنی جدول رنگ باشد) جایگزین جدول رنگ ورودی خواهد شد. این جایگزینی تطبیق رنگ انجام نمیدهد، بنابراین پیکسلهایی که از جایگاه رنگ n در ورودی استفاده کردهاند، همچنان از جایگاه رنگ n در خروجی استفاده خواهند کرد.
- --use-colormap colormap
- تصویر را
تغییر
میدهد تا
از جدول رنگ
colormap استفاده
کند. هر
پیکسل در
تصویر به
نزدیکترین
رنگ
تطبیقیافته
در colormap (یا
اگر --dither
روشن باشد،
به ترکیبی
ترامخورده
از رنگهای
موجود در colormap)
تغییر
مییابد.
مقدار Colormap
میتواند
web برای
پالت ۲۱۶
رنگی امن وب
(“Web-safe palette”)، gray
برای مقیاس
خاکستری، bw
برای
سیاهوسفید،
یا نام یک
فایل باشد.
آن فایل
باید یا یک
فایل متنی
(که قالب آن
در ادامه
توضیح داده
شده است) یا
یک فایل GIF
باشد که از
جدول رنگ
سراسری آن
استفاده
خواهد شد.
اگر گزینه
--colors=N
نیز داده
شود، یک
زیرمجموعه
N-تایی از colormap
به کار
خواهد رفت.
فایلهای متنی جدول رنگ از این قالب استفاده میکنند:
; هر خط بدون علامت توضیح بیانگر یک رنگ است: "red green blue" ; هر مولفه باید بین 0 تا 255 باشد 0 0 0 ; مانند این 255 255 255 ; یا از نماد هگزادسیمال وب استفاده کنید #ffffff ; مانند این
- --use-exact-colormap colormap
- مشابه --use-colormap، اما فایل GIF خروجی از colormap دقیقاً همانطور که هست استفاده خواهد کرد، بهجای آنکه ترتیب آن را تغییر دهد و رنگهای استفادهنشده را حذف کند.
مثالها (EXAMPLES)
ابتدا، بیایید یک پویانمایی به نام ‘anim.gif’ ایجاد کنیم:
gifsicle a.gif b.gif c.gif d.gif > anim.gif
این پویانمایی با سرعت بسیار بالایی حرکت میکند: از آنجا که تاخیری مشخص نکردهایم، مرورگر با حداکثر سرعت ممکن میان فریمها جابهجا میشود. بیایید با استفاده از گزینه --delay سرعت آن را کم کرده و بین هر فریم ۰٫۵ ثانیه مکث قرار دهیم:
gifsicle --delay 50 a.gif b.gif c.gif d.gif > anim.gif
اگر بخواهیم این فایل GIF سه بار تکرار شود، میتوانیم از --loopcount استفاده کنیم:
gifsicle -d 50 --loop=3 a.gif b.gif c.gif d.gif > anim.gif
(بهجای تایپ مجدد --delay، از فرم کوتاه آن یعنی -d استفاده کردیم. بسیاری از گزینهها دارای فرمهای کوتاه هستند؛ میتوانید با اجرای دستور ‘gifsicle --help’ آنها را مشاهده کنید. همچنین --loopcount را به --loop خلاصه کردیم که مشکلی ایجاد نمیکند، زیرا گزینه دیگری با ‘loop’ آغاز نمیشود.)
برای تفکیک ‘anim.gif’ به فریمهای تشکیلدهنده آن:
gifsicle --explode anim.gif ls anim.gif* anim.gif anim.gif.000 anim.gif.001 anim.gif.002 anim.gif.003
برای بهینهسازی ‘anim.gif’:
gifsicle -b -O2 anim.gif
برای تغییر فریم دوم ‘anim.gif’ به تصویر ‘x.gif’:
gifsicle -b --unoptimize -O2 anim.gif --replace "#1" x.gif
گزینه --unoptimize به این دلیل استفاده شده است که ‘anim.gif’ در مرحله قبل بهینهسازی شده بود. ویرایش فریمهای منفرد در فایلهای بهینهشده GIF بدون استفاده از --unoptimize خطرناک است؛ فریمهای پس از فریم تغییریافته ممکن است بر اثر این تغییر دچار ناهنجاری و خرابی شوند. البته ممکن است این همان چیزی باشد که میخواهید.
توجه داشته باشید که گزینههای --unoptimize و --optimize میتوانند بهطور همزمان فعال باشند. گزینه --unoptimize روی فایلهای GIF ورودی تاثیر میگذارد، در حالی که --optimize روی فایلهای GIF خروجی اثرگذار است.
برای چاپ اطلاعات مربوط به فریم اول و چهارم فایل ‘anim.gif’:
gifsicle -I "#0" "#3" < anim.gif
برای تبدیل رنگ سیاه به رنگ شفاف در تمامی فایلهای GIF موجود در پوشه جاری و همچنین چاپ اطلاعات مربوط به هر یک از آنها:
gifsicle -bII --trans "#000000" *.gif
مشخص کردن دو بار گزینه -I باعث میشود خروجی عادی نیز به اجبار تولید شود. با تنها یک بار استفاده از -I، فایلهای GIF هیچ تغییری نمیکردند.
برای تغییر ‘anim.gif’ بهطوری که از یک زیرمجموعه ۶۴ رنگی پالت وب امن استفاده کند:
gifsicle -b --colors=64 --use-col=web anim.gif
برای ساخت یک نسخه ترامخورده سیاهوسفید از ‘anim.gif’:
gifsicle --dither --use-col=bw anim.gif > anim-bw.gif
برای قرار دادن یک فایل GIF بر روی فایلی دیگر -- به گونهای که یک فایل GIF خروجی تکفریم حاصل از برهمنهی دو ورودی ایجاد شود -- میتوانید از gifsicle دو بار استفاده کنید:
gifsicle bottom.gif top.gif | gifsicle -U "#1" > result.gif
اشکالات (BUGS)
برخی از فایلهای GIF بهینهشده ممکن است در برخی از پیادهسازیهای GIF (مانند جاوا) به درستی نمایش داده نشوند؛ گزینه --careful را ببینید.
لطفاً پیشنهادات، بخشهای الحاقی، وصلهها و گزارش اشکالات را به نشانی ekohler@gmail.com ارسال فرمایید.
همچنین ببینید (SEE ALSO)
برای
راهنمای
آموزشی
درباره
تصاویر و
پویانماییهای
GIF،
میتوانید
برخی از
منابع برخط
ارائهشده
در webreference.com را
بررسی
فرمایید:
http://www.webreference.com/authoring/graphics/animation.html
نویسندگان (AUTHORS)
Eddie Kohler <ekohler@gmail.com>
http://www.read.seas.harvard.edu/~kohler
نویسنده و
توسعهدهنده
برنامه.
Anne Dudfield <annied@frii.com>
http://www.frii.com/~annied
نامگذاری
برنامه.
Hans Dinsen-Hansen <dino@danbbs.dk>
http://www.danbbs.dk/~dino
ارائهدهنده
روش درخت
تطبیقپذیر
برای نوشتن
فایلهای GIF.
Kornel Lesin´ski
توسعه
گزینه --lossy.
http://www.lcdf.org/gifsicle
صفحه اصلی
وبسایت gifsicle
.
| 26 February 2025 | Version 1.96 |