CJPEG(1) General Commands Manual CJPEG(1)

cjpeg - فشرده‌سازی یک فایل تصویر به یک فایل JPEG

cjpeg [ options ] [ filename ]

دستور cjpeg فایل تصویری مشخص‌شده یا در صورت مشخص نشدن نام فایل، ورودی استاندارد را فشرده کرده و یک فایل JPEG/JFIF در خروجی استاندارد تولید می‌کند. فرمت‌های فایل ورودی که در حال حاضر پشتیبانی می‌شوند عبارتند از: PNG، PPM (فرمت رنگی PBMPLUS)، PGM (فرمت مقیاس خاکستری PBMPLUS)، BMP، GIF [ویژگی قدیمی] و Targa [ویژگی قدیمی].

نام تمام سوییچ‌ها را می‌توان خلاصه کرد؛ برای مثال، -grayscale را می‌توان به صورت -gray یا -gr نوشت. بیشتر سوییچ‌های «پایه‌ای» را می‌توان حتی تا یک حرف خلاصه کرد. حروف بزرگ و کوچک معادل یکدیگرند (بنابراین -BMP همانند -bmp است). املاهای انگلیسی بریتانیایی نیز پذیرفته می‌شوند (مانند -greyscale)، هرچند به جهت اختصار در ادامه به آن‌ها اشاره نشده است.

سوییچ‌های پایه‌ای عبارتند از:

مقیاس‌بندی جدول‌های کوانتیزاسیون برای تنظیم کیفیت تصویر. مقدار کیفیت بین 0 (بدترین) تا 100 (بهترین) است؛ مقدار پیش‌فرض 75 می‌باشد. (برای اطلاعات بیشتر به ادامه متن مراجعه کنید.)
ایجاد فایل JPEG تک‌رنگ (سیاه و سفید) از ورودی رنگی. با مشخص کردن -grayscale، یک فایل JPEG با حجم کوچک‌تر دریافت خواهید کرد که پردازش آن زمان کمتری می‌برد.
ایجاد فایل JPEG در فضای رنگی RGB. استفاده از این سوییچ تبدیل از فضای رنگی ورودی RGB به فضای رنگی پیش‌فرض JPEG یعنی YCbCr را غیرفعال می‌کند.
انجام بهینه‌سازی پارامترهای کدگذاری آنتروپی. بدون این سوییچ، پارامترهای کدگذاری پیش‌فرض به کار می‌روند. -optimize معمولاً فایل JPEG را کمی کوچک‌تر می‌کند، اما cjpeg تا حدی کندتر اجرا شده و به حافظه بسیار بیشتری نیاز دارد. کیفیت تصویر و سرعت خروج از حالت فشرده تحت تأثیر -optimize قرار نمی‌گیرند.
ایجاد فایل JPEG تدریجی (progressive) (به توضیحات زیر مراجعه کنید). استفاده از این گزینه مستلزم اعمال -optimize است، مگر اینکه -arithmetic نیز مشخص شده باشد.
فایل ورودی دارای فرمت Targa است [ویژگی قدیمی]. فایل‌های Targa که شامل یک فیلد «identification» باشند به طور خودکار توسط cjpeg شناسایی نخواهند شد. برای چنین فایل‌هایی، باید -targa را مشخص کنید تا cjpeg ورودی را به عنوان فرمت Targa پردازش کند. برای بیشتر فایل‌های Targa نیازی به این سوییچ نخواهید داشت.

سوییچ -quality به شما امکان می‌دهد تعادلی میان اندازه فایل فشرده‌شده و کیفیت تصویر بازسازی‌شده برقرار کنید: هرچه تنظیم کیفیت بالاتر باشد، فایل JPEG بزرگ‌تر و تصویر خروجی به ورودی اصلی شبیه‌تر خواهد بود. معمولاً هدف، استفاده از کمترین تنظیم کیفیت (کوچک‌ترین فایل) است که پس از بازگشایی، از نظر بصری از تصویر اصلی قابل تشخیص نباشد. برای این منظور در تصاویر عکاسی، تنظیم کیفیت عموماً باید بین 50 و 95 باشد (مقدار پیش‌فرض 75 است). اگر در -quality 75 اشکالاتی مشاهده کردید، هر بار 5 یا 10 واحد به مقدار آن بیفزایید تا از تصویر خروجی راضی باشید. (تنظیم بهینه از تصویری به تصویر دیگر متفاوت است.)

مقدار -quality 100 یک جدول کوانتیزاسیون با تمام مقادیر 1 تولید می‌کند که افت کیفیت را در مرحله کوانتیزاسیون به حداقل می‌رساند (اما همچنان در زیرنمونه‌برداری و خطای گرد کردن اتلاف اطلاعات وجود دارد). برای بیشتر تصاویر، تعیین مقدار کیفیتی بالاتر از حدود 95 حجم فایل فشرده را به طور چشمگیری افزایش می‌دهد، و در حالی که بهبود کیفیت ناشی از این مقادیر بالا قابل اندازه‌گیری است (با استفاده از معیارهایی چون PSNR یا SSIM)، به ندرت توسط چشم انسان قابل درک است.

از سوی دیگر، مقادیر کیفیت کمتر از 50 فایل‌های بسیار کم‌حجمی با کیفیت تصویر پایین تولید خواهند کرد. تنظیمات در محدوده 5 تا 10 ممکن است برای مثال در تهیه نمایه یک کتابخانه بزرگ تصویر مفید باشد. برای مشاهده برخی جلوه‌های جالب شبیه کوبیسم، مقدار -quality 2 (یا در همین حدود) را امتحان کنید. (نکته: مقادیر کیفیت زیر حدود 25، جدول‌های کوانتیزاسیون 2 بایتی تولید می‌کنند که در استاندارد JPEG اختیاری در نظر گرفته شده‌اند. cjpeg هنگامی که چنین مقدار کیفیتی ارائه دهید پیامی هشدارآمیز صادر می‌کند، زیرا ممکن است برخی برنامه‌های دیگرِ JPEG نتوانند فایل حاصل را رمزگشایی کنند. در صورتی که نیاز به تضمین سازگاری در مقادیر کیفیت پایین دارید، از -baseline استفاده کنید.)

گزینه -quality در این نسخه از cjpeg گسترش یافته تا از تنظیمات کیفیت مجزا برای روشنایی (luminance) و رنگ‌پذیری (chrominance) (یا به طور کلی، تنظیمات مجزا برای هر اسلات جدول کوانتیزاسیون) پشتیبانی کند. اصل بنیادین همانند زیرنمونه‌برداری رنگ‌پذیری است: از آنجا که چشم انسان به تغییرات مکانی در روشنایی حساس‌تر از تغییرات مکانی در رنگ است، مولفه‌های رنگ‌پذیری می‌توانند بدون ایجاد افتی قابل مشاهده در کیفیت تصویر، بیشتر از مولفه‌های روشنایی کوانتیزه شوند. با این حال، بر خلاف زیرنمونه‌برداری، این ویژگی داده‌ها را به جای حوزه مکان، در حوزه بسامد کاهش می‌دهد که امکان کنترلی دقیق‌تر را فراهم می‌سازد. این گزینه در کاربردهای حساس به کیفیت، که در آن‌ها اعوجاج‌های ناشی از زیرنمونه‌برداری قابل قبول نیست، بسیار مفید است.

گزینه -quality فهرستی از پارامترها را می‌پذیرد که با کاما از هم جدا شده‌اند و به ترتیب به سطوح کیفیتی که باید به اسلات‌های جدول کوانتیزاسیون اختصاص یابند اشاره دارند. اگر تعداد اسلات‌های جدول q از پارامترها بیشتر باشد، آخرین پارامتر تکرار می‌شود. بنابراین، اگر تنها یک پارامتر کیفیت داده شود، برای هر دوی روشنایی و رنگ‌پذیری (به ترتیب اسلات‌های 0 و 1) استفاده خواهد شد، که رفتار موروثی cjpeg نسخه v6b و ماقبل آن را حفظ می‌کند. جدول‌های کوانتیزاسیون بیشتر (یا سفارشی‌شده) را می‌توان با گزینه -qtables تنظیم و با گزینه -qslots به مولفه‌ها اختصاص داد (به سوییچ‌های «جادوگر» در ادامه مراجعه کنید).

فایل‌های JPEG تولیدشده با کیفیت‌های مجزا برای روشنایی و رنگ‌پذیری به طور کامل با رمزگشاهای استاندارد JPEG سازگار هستند.

هشدار: برای اینکه این تنظیم سودمند باشد، حتماً آرگومان -sample 1x1 را به cjpeg ارسال کنید تا زیرنمونه‌برداری رنگ‌پذیری غیرفعال شود. در غیر این صورت، سطح زیرنمونه‌برداری پیش‌فرض (2x2، معروف به «4:2:0») استفاده خواهد شد.

سوییچ -progressive یک فایل «JPEG تدریجی» ایجاد می‌کند. در این نوع فایل JPEG، داده‌ها در چندین پویش (scan) با کیفیت فزاینده ذخیره می‌شوند. اگر فایل از طریق یک پیوند ارتباطی کند در حال انتقال باشد، رمزگشا می‌تواند از پویش اول برای نمایش بسیار سریع تصویری با کیفیت پایین استفاده کند و سپس با هر پویش بعدی، کیفیت نمایش را بهبود بخشد. تصویر نهایی دقیقاً معادل یک فایل JPEG استاندارد با همان تنظیم کیفیت است، و حجم کلی فایل نیز تقریباً یکسان — و اغلب کمی کوچک‌تر — خواهد بود.

سوییچ‌ها برای کاربران پیشرفته:

ایجاد فایل JPEG با دقت داده N بیتی. N عددی از 2 تا 16 است؛ مقدار پیش‌فرض 8 می‌باشد. اگر N برابر 8 یا 12 نباشد، باید -lossless نیز مشخص شود. توجه داشته باشید که تنها فرمت فایل ورودی PBMPLUS از دقت‌های داده‌ای به غیر از 8 پشتیبانی می‌کند. همچنین توجه داشته باشید که فایل‌های ورودی PBMPLUS بدون هشدار به دقت داده هدف مقیاس‌بندی می‌شوند، حتی اگر کمتر از دقت فایل ورودی باشد. ارسال آرگومان -verbose به cjpeg موجب چاپ اطلاعاتی درباره دقت فایل ورودی خواهد شد. هشدار: تنها دقت داده 8 بیتی به طور گسترده پیاده‌سازی شده است، بنابراین بسیاری از رمزگشاها قادر به پردازش فایل‌های JPEG با دقت‌های داده دیگر نخواهند بود.
گزینه -precision 12 مستلزم اعمال -optimize است، مگر اینکه -arithmetic نیز مشخص شده باشد.
ایجاد یک فایل JPEG بدون اتلاف (lossless) با استفاده از مقدار انتخاب پیش‌بین (1 تا 7) مشخص‌شده و تبدیل نقطه‌ای اختیاری (0 تا precision - 1، که در آن precision دقت داده JPEG بر حسب بیت است). مقدار تبدیل نقطه‌ای 0 (پیش‌فرض) برای ایجاد یک فایل کاملاً بدون اتلاف JPEG ضروری است. (مقدار تبدیل نقطه‌ای غیرصفر، نمونه‌های ورودی را به تعداد بیت‌های مشخص‌شده به سمت راست شیفت می‌دهد که در واقع شکلی از کوانتیزاسیون رنگی دارای اتلاف است). هشدار: قالب JPEG بدون اتلاف هنوز به طور گسترده پیاده‌سازی نشده است، بنابراین بسیاری از رمزگشاها اصلاً قادر به پردازش فایل‌های JPEG بدون اتلاف نخواهند بود. در بیشتر موارد، فشرده‌سازی و خارج‌سازی فایل‌های JPEG بدون اتلاف بسیار کندتر از فشرده‌سازی و خارج‌سازی فایل‌های JPEG دارای اتلاف (lossy) بوده و حجم فایل‌های بدون اتلاف نیز بسیار بیشتر از فایل‌های با اتلاف است. همچنین توجه داشته باشید که ویژگی‌های زیر هنگام فشرده‌سازی یا بازگشایی یک فایل JPEG بدون اتلاف در دسترس نخواهند بود:
- انتخاب کیفیت/جدول کوانتیزاسیون
- تبدیل فضای رنگی (تصویر JPEG از همان فضای رنگی تصویر ورودی استفاده خواهد کرد)
- کوانتیزاسیون رنگ
- انتخاب الگوریتم DCT/IDCT
- هموارسازی (Smoothing)
- کاهش یا افزایش نمونه‌برداری (Downsampling/upsampling)
- مقیاس‌بندی IDCT
- بازگشایی جزئی تصویر
- تبدیل‌ها با استفاده از jpegtran
هر سوییچی که برای فعال‌سازی یا پیکربندی این ویژگی‌ها به کار رود، نادیده گرفته خواهد شد.
استفاده از کدگذاری حسابی (arithmetic coding). هشدار: فرمت JPEG با کدگذاری حسابی هنوز به طور گسترده پیاده‌سازی نشده است، بنابراین بسیاری از رمزگشاها اصلاً قادر به پردازش فایل‌های JPEG کدگذاری‌شده به صورت حسابی نخواهند بود.
استفاده از روش دقیق DCT عدد صحیح (پیش‌فرض).
استفاده از روش کم‌دقت‌تر DCT عدد صحیح [ویژگی قدیمی]. هنگامی که نرم‌افزار Independent JPEG Group برای اولین بار در سال 1991 منتشر شد، زمان فشرده‌سازی برای یک تصویر JPEG یک مگاپیکسلی در رایانه‌های شخصی رایج بر حسب دقیقه اندازه‌گیری می‌شد. از این رو، الگوریتم DCT عدد صحیح fast مزایای عملکردی چشمگیری ارائه می‌داد. با این حال، روی پردازنده‌های امروزی که libjpeg-turbo را اجرا می‌کنند، زمان فشرده‌سازی برای یک تصویر JPEG یک مگاپیکسلی بر حسب میلی‌ثانیه محاسبه می‌شود و بدین ترتیب مزایای عملکردی الگوریتم fast بسیار کمتر به چشم می‌آید. در پردازنده‌های امروزی x86/x86-64 که از دستورالعمل‌های AVX2 پشتیبانی می‌کنند، روش‌های fast و int عملکرد مشابهی دارند. در دیگر انواع پردازنده‌ها، روش fast عموماً حدود 5 تا 15 درصد سریع‌تر از روش int است.

برای سطوح کیفیت 90 و پایین‌تر، اختلاف کیفیت محسوس اندک بوده یا اصلاً وجود ندارد. با این حال، برای سطوح کیفیت بالاتر از 90، تفاوت میان روش‌های fast و int بارزتر می‌شود. برای مثال، در کیفیت 97، روش fast عموماً با حدود 1 تا 3 دسی‌بل افت در PSNR نسبت به روش int همراه است، اما این مقدار در برخی تصاویر می‌تواند بیشتر باشد. از روش fast در سطوح کیفیت بالای 97 استفاده نکنید. این الگوریتم در کیفیت 98 و بالاتر اغلب دچار زوال شده و می‌تواند تصویری با اتلاف بیشتر نسبت به سطوح کیفیت پایین‌تر تولید کند. علاوه بر این، در libjpeg-turbo روش fast برای سطوح کیفیت بالای 97 به طور کامل شتاب‌دهی نشده است، بنابراین کندتر از روش int خواهد بود.

استفاده از روش ممیز شناور DCT [ویژگی قدیمی]. روش float نتایج قابل‌توجه دقیق‌تری نسبت به روش int تولید نمی‌کند و بسیار کندتر است. روش float همچنین ممکن است به دلیل تفاوت در نحوه گرد کردن، روی سیستم‌های مختلف نتایج متفاوتی بدهد، در حالی که روش‌های عدد صحیح باید در تمام سیستم‌ها نتایج یکسانی ارائه دهند.
گنجاندن نمایه مدیریت رنگ ICC موجود در فایل مشخص‌شده. اگر نه این گزینه و نه -noicc مشخص نشده باشند و فایل ورودی یک فایل PNG حاوی نمایه مدیریت رنگ ICC تعبیه‌شده باشد، این نمایه از فایل ورودی منتقل خواهد شد.
عدم انتقال نمایه مدیریت رنگ ICC تعبیه‌شده (در صورت وجود) از فایل ورودی PNG.
درج یک نشانگر راه‌اندازی مجدد (restart marker) در هر N ردیف MCU، یا هر N واحد MCU در صورتی که حرف «B» به عدد ضمیمه شده باشد.
در تصاویر معمولی JPEG، یک واحد MCU (کوچک‌ترین واحد کدگذاری شده - Minimum Coded Unit) حداقل مجموعه‌ای از «واحدهای داده» درهم‌آمیخته (بلوک‌های DCT اندازه 8x8 در تصاویر دارای اتلاف، یا نمونه‌ها در تصاویر بدون اتلاف) است که برای نشان دادن دست‌کم یک واحد داده به ازای هر مولفه لازم است. (برای مثال، یک MCU در تصویر JPEG دارای اتلافِ درهم‌آمیخته که از زیرنمونه‌برداری 4:2:2 استفاده می‌کند، از دو بلوک روشنایی و به دنبال آن یک بلوک برای هر یک از مولفه‌های رنگ‌پذیری تشکیل شده است). در تصاویر تک‌مولفه‌ای یا JPEGهای غیردرهم‌آمیخته، MCU همانند یک واحد داده است. یک ردیف MCU سطری از MCUها است که در تمام عرض تصویر امتداد دارد.
مقدار -restart 0 (پیش‌فرض) به معنای عدم درج نشانگرهای راه‌اندازی مجدد است.
هموارسازی تصویر ورودی برای حذف نویز ترام‌دهی (dithering). N، با دامنه‌ای از 1 تا 100، شدت هموارسازی را مشخص می‌کند. مقدار 0 (پیش‌فرض) به معنای عدم اعمال هموارسازی است.
تعیین محدودیت برای میزان حافظه مورد استفاده در پردازش تصاویر بزرگ. مقدار بر حسب هزار بایت است، یا در صورتی که حرف «M» به عدد ضمیمه شود، بر حسب میلیون بایت خواهد بود. برای مثال، -max 4m مقدار 4000000 بایت را انتخاب می‌کند. اگر به فضای بیشتری نیاز باشد، خطا رخ خواهد داد.
ارسال تصویر خروجی به فایل نام‌برده‌شده، به جای خروجی استاندارد.
عدم بازنویسی روی فایل خروجی در صورت وجود داشتن آن.
فشرده‌سازی در حافظه به جای فایل. این ویژگی عمدتاً به عنوان روشی برای آزمودن مدیر مقصد درون‌حافظه‌ای (jpeg_mem_dest()) پیاده‌سازی شده است، اما برای محک‌زدن نیز سودمند است، زیرا بار سربار ورودی/خروجی را کاهش می‌دهد.
گزارش پیشرفت فشرده‌سازی.
تلقی تمام هشدارها به عنوان خطای مهلک. فعال‌سازی این گزینه موجب می‌شود که در صورت وجود داده‌های ناقص یا خراب در تصویر ورودی GIF فشرده‌شده با LZW، فشرده‌ساز متوقف شود.
فعال‌سازی چاپ اطلاعات اشکال‌زدایی. تکرار بیشتر -v خروجی بیشتری ارائه می‌دهد. همچنین، اطلاعات نسخه در هنگام شروع چاپ می‌شود.
مشابه -verbose.
چاپ اطلاعات نسخه و خروج.

گزینه -restart نشانگرهای اضافی را درج می‌کند که به رمزگشای JPEG امکان می‌دهد پس از وقوع خطای انتقال، دوباره همگام شود. بدون نشانگرهای راه‌اندازی مجدد، هرگونه خرابی در فایل فشرده معمولاً تصویر را از نقطه بروز خطا تا پایان تصویر تخریب خواهد کرد؛ اما با وجود نشانگرهای راه‌اندازی مجدد، آسیب معمولاً به بخشی از تصویر تا نشانگر راه‌اندازی مجدد بعدی محدود می‌شود. البته، نشانگرهای راه‌اندازی مجدد فضای اضافی اشغال می‌کنند. ما -restart 1 را برای تصاویری که از طریق شبکه‌های غیرقابل اعتماد مانند Usenet انتقال می‌یابند توصیه می‌کنیم.

گزینه -smooth ورودی را فیلتر می‌کند تا نویزهای ریزمقیاس حذف شوند. این گزینه اغلب هنگام تبدیل تصاویر ترام‌دار به JPEG بسیار کاربردی است: یک ضریب هموارسازی ملایم بین 10 تا 50 الگوهای ترام را در فایل ورودی برطرف کرده و باعث کاهش حجم فایل JPEG و نمایش زیباتر تصویر می‌شود. با این حال، ضریب هموارسازی بیش از حد بزرگ تصویر را به طور محسوسی تار خواهد کرد.

سوییچ‌ها برای کاربران خبره (wizard):

اجبار به تولید جدول‌های کوانتیزاسیون سازگار با خط پایه (baseline). این گزینه مقادیر کوانتیزاسیون را حتی در تنظیمات کیفیت پایین به 8 بیت محدود می‌کند. (نام‌گذاری این سوییچ نامناسب است، چرا که تضمین نمی‌کند خروجی واقعاً یک JPEG خط پایه باشد. به عنوان مثال، می‌توانید -baseline و -progressive را با یکدیگر استفاده کنید.)
استفاده از جدول‌های کوانتیزاسیون مشخص‌شده در فایل متنی داده‌شده.
انتخاب جدول کوانتیزاسیون مورد استفاده برای هر مولفه رنگی.
تعیین فاکتورهای نمونه‌برداری JPEG برای هر مولفه رنگی.
استفاده از اسکریپت پویش مشخص‌شده در فایل متنی داده‌شده.

سوییچ‌های «خبره» برای آزمایش و بررسی کارکرد با JPEG در نظر گرفته شده‌اند. اگر دقیقاً نمی‌دانید چه کاری انجام می‌دهید، از آن‌ها استفاده نکنید. این سوییچ‌ها در فایل wizard.txt با جزئیات بیشتری مستند شده‌اند.

این مثال فایل PPM با نام foo.ppm را با ضریب کیفیت 60 فشرده کرده و خروجی را در foo.jpg ذخیره می‌کند:

cjpeg -quality 60 foo.ppm > foo.jpg

فایل‌های GIF رنگی ورودی ایده‌آلی برای JPEG نیستند؛ JPEG در واقع برای فشرده‌سازی تصاویر تمام‌رنگ (24 بیتی تا 48 بیتی) در نظر گرفته شده است. به ویژه، سعی نکنید کارتون‌ها، نقشه‌ها و طرح‌های خطی و سایر تصاویری را که تنها شامل چند رنگ متمایز هستند تبدیل کنید. GIF برای این موارد عالی عمل می‌کند، اما JPEG خیر. اگر می‌خواهید یک GIF را به JPEG تبدیل کنید، باید با گزینه‌های -quality و -smooth در cjpeg آزمایش کنید تا به تبدیلی رضایت‌بخش دست یابید. مقدار -smooth 10 یا در همین حدود اغلب مفید واقع می‌شود.

از عبور دادن یک تصویر در چرخه‌های متوالی فشرده‌سازی/خارج‌سازی از فشرده‌سازی JPEG خودداری کنید. افت کیفیت تصویر انباشته خواهد شد؛ پس از حدود ده چرخه ممکن است تصویر به طور قابل ملاحظه‌ای بدتر از وضعیت آن پس از یک چرخه باشد. بهتر است هنگام ویرایش تصویر از یک فرمت بدون اتلاف استفاده کنید و سپس زمانی که آماده ذخیره نهایی تصویر شدید، آن را به فرمت JPEG تبدیل نمایید.

استفاده از گزینه -optimize در cjpeg زمانی که در حال ساخت نسخه «نهایی» برای انتشار یا بایگانی هستید، ارزش بالایی دارد. همچنین زمانی که از تنظیمات کیفیت پایین برای ساخت فایل‌های بسیار کوچک JPEG استفاده می‌کنید، یک مزیت محسوب می‌شود؛ زیرا درصد بهبود اغلب بسیار بیشتر از فایل‌های بزرگ‌تر است. (در حال حاضر، هنگام تولید فایل‌های JPEG تدریجی، حالت -optimize همیشه انتخاب می‌شود.)

اگر این متغیر محیطی مقداردهی شده باشد، مقدار آن به عنوان حد پیش‌فرض حافظه در نظر گرفته می‌شود. مقدار آن مطابق با توضیحات سوییچ -maxmemory تعیین می‌گردد. JPEGMEM مقدار پیش‌فرضی را که هنگام کامپایل برنامه تعیین شده نادیده می‌گیرد و خود نیز توسط سوییچ صریح -maxmemory بازنویسی می‌شود.

djpeg(1), jpegtran(1), rdjpgcom(1), wrjpgcom(1)
ppm(5), pgm(5)
Wallace, Gregory K. "The JPEG Still Picture Compression Standard", Communications of the ACM, April 1991 (vol. 34, no. 4), pp. 30-44.

Independent JPEG Group

این فایل توسط The libjpeg-turbo Project اصلاح شد تا تنها اطلاعات مربوط به libjpeg-turbo را در بر گیرد، نگارش بخش‌های خاصی ویرایش شود و ویژگی‌هایی که در libjpeg وجود ندارند شرح داده شوند.

تمام گونه‌های فرمت‌های فایل BMP و Targa پشتیبانی نمی‌شوند.

24 March 2026