Ppmtoarbtxt User Manual(0) Ppmtoarbtxt User Manual(0)

ppmtoarbtxt - تولید تصویر در قالب متنی دلخواه از یک تصویر PPM

ppmtoarbtxt bodytmpl [-hd headtmpl] [-tl tailtmpl] [ppmfile]

این برنامه بخشی از Netpbm(1) است.

دستور ppmtoarbtxt قالب‌های گرافیکی متنی ساده را بر مبنای توصیف ساختار ارائه‌شده به عنوان ورودی تولید می‌کند. قالب گرافیکی متنی قالبی است که در آن یک تصویر توسط متن نمایش داده می‌شود (مانند فرمت متنی plain در PNM، بر خلاف فرمت دودویی raw در PNM).

دستور ppmtoarbtxt یک تصویر PPM را به عنوان ورودی می‌خواند. برای هر پیکسل در تصویر، ppmtoarbtxt محتویات فایل قالب بدنه (bodytmpl) را با انجام جایگزینی‌های مشخص بر اساس مقدار آن پیکسل، در خروجی استاندارد (stdout) می‌نویسد.

شما همچنین می‌توانید یک فایل قالب سربرگ (head template) مشخص کنید؛ در این حالت ppmtoarbtxt متنی را بر اساس ابعاد تصویر از فایل قالب تولید کرده و آن را پیش از هر چیز دیگری در خروجی قرار می‌دهد.

به همین ترتیب، می‌توانید یک فایل قالب پاورقی (tail template) ارائه دهید تا متن مربوطه در انتهای خروجی درج شود.

متنی که ppmtoarbtxt از یک فایل قالب تولید می‌کند، همان متن تحت‌اللفظی فایل قالب است، با این تفاوت که مشخص‌کننده‌های جایگزینی با مقادیر مربوطه جایگزین می‌شوند. برنامه یک مشخص‌کننده جایگزینی را به صورت متنی در قالب #(...) تشخیص می‌دهد.

دستور ppmtoarbtxt با فاصله‌ها (white space) در فایل‌های قالب مانند هر نویسه دیگری رفتار می‌کند و آن‌ها را در خروجی قرار می‌دهد، به جز یک مورد استثنا: اگر فایل قالب با نویسه خط جدید (newline) پایان یابد، ppmtoarbtxt آن را نادیده گرفته و در خروجی درج نمی‌کند.

بسیاری از مشخص‌کننده‌های جایگزینی از رشته‌های قالب‌بندی (فرمی دیگر از الگو) برای تعیین نحوه جایگزینی استفاده می‌کنند. شما باید این رشته‌های فرمت را تا حد ممکن مینیمال و ساده بنویسید و متن‌های تحت‌اللفظی را به جای قرار دادن درون رشته فرمت، بیرون از مشخص‌کننده جایگزینی قرار دهید. به عنوان مثال:

اشتباه: #(flum %%%2.2f 0 1)

صحیح: %#(flum %2.2f 0 1)

مشخص‌کننده‌های مجاز جایگزینی به شرح زیر هستند. متنی که به شکل یک مشخص‌کننده جایگزینی باشد اما در عمل معتبر نباشد (مانند #(random junk))، معمولاً به صورت همان متن تحت‌اللفظی درج می‌شود، اما اگر شباهت زیادی به یک مشخص‌کننده معتبر داشته باشد، ppmtoarbtxt فرض می‌کند که خطایی رخ داده است و اجرا ناموفق خواهد بود.

مشخص‌کننده‌های کاربردی در قالب بدنه، برای انجام جایگزینی بر اساس یک پیکسل خاص:

#(ired format blackref whiteref)
یک عدد صحیح در بازه بین blackref تا whiteref با قالب مشخص‌شده توسط format تولید می‌کند که نشان‌دهنده شدت رنگ قرمز پیکسل است. شدت رنگ قرمز صفر تبدیل به blackref می‌شود؛ شدت رنگ قرمز با بیشترین مقدار (maxval) تبدیل به whiteref شده و بقیه مقادیر به صورت خطی در این میان درون‌یابی می‌شوند.

آرگومان format یک مشخص‌کننده فرمت شبیه به printf مانند "%d" است. دستور ppmtoarbtxt از آن به عنوان کل رشته فرمت برای فراخوانی تابع سیستمی POSIX بنام fprintf استفاده می‌کند که تنها آرگومان دیگر آن شدت رنگ قرمز به عنوان یک نوع داده عددی صحیح است. دستور ppmtoarbtxt الزاماً منطقی بودن رشته فرمت شما را بررسی نمی‌کند؛ حتی مقادیری وجود دارند که ممکن است باعث کرش کردن برنامه شوند. برای جلوگیری از رفتارهای غیرمنتظره، رشته‌های فرمت را ساده و ثابت نگه دارید و هرگز از علامت درصد اضافی یا خط جدید استفاده نکنید.

عبارت #(ired) معادل #(ired %d 0 255) است.

#(igreen format blackref whiteref)
مشابه #(ired... است، اما برای رنگ سبز عمل می‌کند.
#(iblue format blackref whiteref)
مشابه #(ired... است، اما برای رنگ آبی عمل می‌کند.
#(ilum format blackref whiteref)
مشابه #(ired... است، اما مقدار روشنایی (luminance) پیکسل را نمایش می‌دهد: (0.299*red + 0.587*green + 0.114*blue).
#(fred format blackref whiteref)
مشابه #(ired... است، اما به جای یک عدد صحیح، یک عدد ممیز شناور تولید می‌کند.

در این حالت، آرگومان دوم ارسالی به تابع fprintf که از format استفاده می‌کند، نوع داده اعشاری با دقت مضاعف (double precision floating point) است.

عبارت #(fred) معادل #(fred %f 0.0 1.0) است.

#(fgreen format blackref whiteref)
مشابه #(fred... است، اما برای رنگ سبز به کار می‌رود.
#(fblue format blackref whiteref)
مشابه #(fred... است، اما برای رنگ آبی به کار می‌رود.
#(flum format blackref whiteref)
مشابه #(fred... است، اما مقدار روشنایی پیکسل را نمایش می‌دهد: (0.299*red + 0.587*green + 0.114*blue).
#(posx format)
موقعیت افقی پیکسل را بر حسب پیکسل از لبه چپ تصویر تولید می‌کند.

آرگومان دوم در فراخوانی تابع fprintf که از format استفاده می‌کند دارای نوع داده عدد صحیح بدون علامت (unsigned integer) است.

مقدار پیش‌فرض format برابر با %u است.

#(posy format)
مشابه #(width... است، اما برای موقعیت عمودی پیکسل به کار می‌رود.

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

مشخص‌کننده‌های کاربردی در قالب سربرگ یا پاورقی، برای انجام جایگزینی‌ها بر پایه ویژگی‌های کل تصویر:

#(width format)
عرض تصویر را بر حسب پیکسل تولید می‌کند.

آرگومان دوم ارسالی به fprintf که از format استفاده می‌کند، نوع داده عدد صحیح بدون علامت دارد.

مقدار پیش‌فرض format برابر با %u است.

#(height format)
مشابه #(width... است، اما برای ارتفاع تصویر به کار می‌رود.

علاوه بر گزینه‌های مشترک برای تمام برنامه‌های مبتنی بر libnetpbm (به‌ویژه -quiet، به گزینه‌های مشترک (Common Options) مراجعه کنید)، دستور ppmtoarbtxt گزینه‌های خط فرمان زیر را نیز می‌شناسد:

این گزینه یک قالب سربرگ را تعیین می‌کند (headtmpl نام فایل قالب سربرگ است)؛ این گزینه باعث می‌شود ppmtoarbtxt محتویات فایل با نام headtmpl را در ابتدای خروجی قرار دهد.
این گزینه یک قالب پاورقی را مشخص می‌کند؛ و ساختاری مشابه با -hd دارد.

در اینجا تصویری در قالب متنی ساده PGM همراه با معکوس‌سازی خاکستری تولید می‌کنیم (مشابه ppmtopgm | pnminvert).

محتویات فایل قالب سربرگ ما:

P2
#(width) #(height)
255

محتویات فایل قالب بدنه ما:

#(ilum %d 255 0)

در اینجا یک فایل povray تولید می‌کنیم که در آن هر پیکسل با کره‌ای در مختصات (x,y,z) = (posx,height-posy,luminance) نمایش داده می‌شود. رنگ کره همان رنگ پیکسل خواهد بود.

محتویات قالب سربرگ ما:

#include "colors.inc"
#include "textures.inc"
camera {
   location  <#(width) * 0.6, #(height) * 0.7, 80>
   look_at   <#(width) * 0.5, #(height) * 0.5, 0>
}
light_source { <#(width) * 0.5, #(height) * 0.5, 25> color White
}

محتویات قالب بدنه ما:

sphere { <#(posx),#(height)-#(posy),#(ilum %d 0 10)>, 0.5
  texture {
    pigment {
      color rgb <#(fred),#(fgreen),#(fblue)>
    }
    finish {
      phong 1
    }
  }
}

pnmtoplainpnm(1), pamtable(1), ppm(1)

دستور ppmtoarbtxt در نسخه ۱۰.۱۴ بسته Netpbm (مارس ۲۰۰۳) اضافه شد. این ابزار از سال ۱۹۹۵ با نام ppmtotxt وجود داشته است.

حق نشر (C) ۱۹۹۵ متعلق به Peter Kirchgessner

این صفحه راهنما توسط ابزار «makeman» از Netpbm از منبع HTML تولید شده است. مستندات مرجع در نشانی زیر در دسترس است:

http://netpbm.sourceforge.net/doc/ppmtoarbtxt.html
26 November 2014 netpbm documentation