GIFBUILD(1) GIFLIB Documentation GIFBUILD(1)

gifbuild - استخراج داده‌های GIF در قالب متنی، یا بازتولید آن به فایل GIF

gifbuild [-v] [-a] [-d] [-t translation-table] [-h] [gif-file]

برنامه‌ای برای تبدیل مجموعه‌ای از مشخصات متنی و قابل ویرایش آیکون GIF و فایل‌های نام‌گذاری‌شده GIF به یک GIF چندتصویری، قابل استفاده به عنوان یک فایل منبع گرافیکی. این ابزار همچنین می‌تواند فایل‌های GIF موجود را در این قالب استخراج کند. هر دو جهت تبدیل بدون اتلاف (lossless) و معکوس یکدیگر هستند.

هنگام استخراج یک فایل GIF، بررسی‌های اعتبارسنجی خاصی انجام می‌شود که ممکن است منجر به صدور هشدار در خروجی خطای استاندارد (stderr) شود.

اگر هیچ فایل GIF مشخص نشود، gifbuild تلاش می‌کند ورودی متنی را از ورودی استاندارد (stdin) بخواند.

در اینجا خلاصه‌ای از نحو به صورت فرم غیررسمی BNF آورده شده است. نشانه `NL' نشان‌دهنده شکستن خط الزامی (newline) است.

<gif-spec> ::= <header-block> <image-block>...
<header-block> ::= <header-declaration>...
<header-declaration ::=
		| screen width <digits> NL
		| screen height <digits> NL
		| screen colors <digits> NL
		| screen background <digits> NL
		| pixel aspect byte <digits> NL
		| screen map <color-table> NL
<color-table> ::= <color-declaration>... end NL
<color-declaration> ::= rgb <digits> <digits> <digits> [ is <key>] NL
                | sort flag {on|off} NL
<image-block> ::= include <file-name> NL
		| image NL
			<image-declaration>...
			<raster-picture>
			[ <extension> ]
<image-declarations> ::= image top <digits> NL
			| image left <digits> NL
			| image interlaced NL
			| image map <color-table> NL
			| image bits <digits> by <digits> [hex|ascii] NL <raster-block>
<extension> := <comment> NL <extension-block> NL end NL
		| <plaintext> NL <extension-block> NL end NL
                | graphics control NL <GCB-part> NL end NL
                | netscape loop  <digits> NL
		| extension <hex-digits> NL <extension-block> NL end NL
<GCB-part> ::= disposal mode <digits> NL
                | user input flag {on|off} NL
                | delay <digits> NL
                | transparent index <digits> NL

اگر نوع داده‌های اعلانات “screen height”، “screen width”، “screen background”، “image top” و “image left” برای شما واضح نیست، واقعاً با این نرم‌افزار چه کار می‌کنید؟

اعلان “pixel aspect byte” یک مخرج عدد صحیح برای کسری که بیانگر نسبت ابعاد پیکسل است تنظیم می‌کند. برای جزئیات به استاندارد GIF مراجعه کنید؛ این فیلد در واقع از مدت‌ها پیش منسوخ شده است.

یک جدول رنگ، شاخص‌های رنگ را (به ترتیب صعودی از ۰) اعلام می‌کند و ممکن است آن‌ها را به کلیدواژه‌های کاراکتری مرتبط سازد (این ارتباط‌ها زمانی که جدول بیش از ۹۴ رنگ باشد وجود ندارند و بلوک‌های شطرنجی که از آن استفاده می‌کنند باید از جفت‌نویسه‌های هگز استفاده کنند). این نویسه‌ها بعداً می‌توانند در بلوک‌های شطرنجی استفاده شوند. از آنجا که این نویسه‌ها باید قابل چاپ و غیرفاصله باشند، در هر آیکون فقط می‌توانید ۹۴ رنگ را مشخص کنید. زندگی گاهی همین‌طور است.

اعلان جدول رنگ همچنین می‌تواند پرچم مرتب‌سازی جدول را با "sort flag on" یا "sort flag off" در هر خطی پیش از پایان (end) تنظیم کند.

یک بلوک شطرنجی “ascii” تنها بلوکی از نویسه‌های کلیدی است (برای جدول رنگ با ۹۴ رنگ یا کمتر استفاده می‌شود). یک بلوک شطرنجی “hex” در عوض از جفت‌رقم‌های هگزادسیمال استفاده می‌کند (برای جدول رنگ با بیش از ۹۴ رنگ به‌کار می‌رود). مقدار پیش‌فرض ASCII است. اندازه آن باید متناسب با اعلان “image bits” پیش از خود تنظیم شده باشد. بلوک‌های شطرنجی فایل‌های GIF درهم‌بافته (interlaced) با خطوطی به ترتیب غیردرهم‌بافته استخراج می‌شوند.

کلمات کلیدی “comment”، “plaintext” یا “graphics control” داده‌های رکورد پسوند تعریف‌شده GIF89 را هدایت می‌کنند. نوع نهایی GIF89، یعنی بلوک کنترل گرافیکی و برنامه، هنوز پشتیبانی نمی‌شود، اما کد یک بلوک حلقه نت‌اسکیپ (Netscape loop block) را تشخیص می‌دهد. شما همچنین می‌توانید عبارت “extension” را به همراه نوع رکورد در قالب هگزادسیمال درج کنید. تمامی این اعلانات پسوند باید با یک بلوک پسوند دنبال شوند که با کلمه کلیدی “end” در یک خط مستقل خاتمه می‌یابد.

یک بلوک پسوند مجموعه‌ای از خطوط متنی است که هر کدام به عنوان رشته‌ای از بایت‌ها برای پر کردن بلوک پسوند تفسیر می‌شوند (نویسه خط جدید انتهایی حذف می‌شود). متن ممکن است شامل کدهای گریز استاندارد هشت‌هشتی و هگزادسیمال به سبک زبان C باشد که با بک‌اسلش آغاز می‌شوند.

اعلان بلوک کنترل گرافیکی یک بلوک پسوند کنترل گرافیک ایجاد می‌کند؛ برای معناشناسی فیلدها به بخش ۲۳ استاندارد GIF89 مراجعه کنید.

اعلان حلقه نت‌اسکیپ (netscape loop) یک بلوک پسوند برنامه شامل کنترل حلقه انیمیشن NETSCAPE 2.0 با تعداد تکرار مشخص ایجاد می‌کند (تکرار ۰ به معنای تکرار نامحدود است). این اعلان باید بلافاصله پس از اعلان سرآیند (header) قرار گیرد. این بلوک‌های حلقه توسط مرورگرهای خانواده Netscape/Mozilla/Firefox تفسیر می‌شوند.

تمامی نشانه‌های <digits> به عنوان اعداد ده‌دهی تفسیر می‌شوند؛ نشانه‌های <hex-digits> به عنوان دو رقم هگزادسیمال (یک بایت) در نظر گرفته می‌شوند. تمامی مختصات با مبدأ صفر بوده و گوشه بالا سمت چپ (0,0) است. بررسی محدوده ضعیف بوده و بررسی علامت‌دار بودن وجود ندارد؛ مراقب باشید هکرها!

به‌طور کلی، مقدار فاصله‌های خالی و ترتیب اعلانات در داخل یک بلوک سرآیند یا تصویر اهمیتی ندارد، مگر اینکه یک تصویر شطرنجی باید بلافاصله پس از اعلان “image bits” مربوط به خود قرار گیرد.

اعلان “include” یک فایل GIF نام‌گذاری‌شده را به عنوان تصویر بعدی اضافه می‌کند. جدول‌های رنگ سراسری GIFهای گنجانده‌شده با جدول پایه‌ای که توسط هر اعلان “screen color” تعریف شده باشد ادغام می‌گردند. تمام تصاویر یک GIF چندتصویری گنجانده‌شده به ترتیب اضافه خواهند شد.

کامنت‌ها (که با “#” شروع می‌شوند) نادیده گرفته خواهند شد.

-v

حالت پرگو (نمایش روند پیشرفت). چاپ خطوط اسکن در حال پردازش را فعال می‌کند.

-d

استخراج فایل(های) GIF ورودی به قالب متنی شرح داده شده در بالا.

-t

مشخص کردن نویسه‌های نام مورد استفاده هنگام استخراج بلوک‌های شطرنجی. تنها با گزینه -d معتبر است.

-h

چاپ یک خط راهنمای خط فرمان، مشابه خلاصه دستور بالا.

بررسی خطا ابتدایی و مقدماتی است.

یک فایل آیکون نمونه با نام sample.ico در دایرکتوری pic از توزیع سورس GIFLIB گنجانده شده است.

Eric S. Raymond <esr@thyrsus.com>

2 May 2012 GIFLIB