ابزار انتخاب رنگ - تبدیل کدهای رنگ RGB، هگز، CMYK و HSV
انتخابگر رنگ آنلاین رایگان با تبدیل فوری RGB، هگز، CMYK و HSV. برای انتخاب رنگها به صورت بصری روی طیف کلیک کنید یا مقادیر دقیق را وارد نمایید. با یک کلیک هر فرمتی را برای طراحی وب، چاپ و پروژههای دیجیتال کپی کنید.
انتخابگر رنگ
RGB (0-255)
CMYK (0-100)
انتخابگر رنگ
مستندات
آنچه میتوانید با این انتخابکننده رنگ انجام دهید
آیا به سایه دقیق برای پروژه خود نیاز دارید؟ این انتخابکننده رنگ به شما اجازه میدهد رنگها را انتخاب، پیشنمایش و بین فرمتهای RGB، هگزادسیمال، CMYK و HSV به سرعت تبدیل کنید. چه در حال کدنویسی وبسایت، طراحی لوگو یا آمادهسازی فایلها برای چاپ باشید، دقیقاً مقادیر رنگی که نیاز دارید را پیدا خواهید کرد - بدون حدس و گمان و بدون جابجایی بین ابزارها.
با کلیک در هر نقطه از طیف رنگ، یک سایه را انتخاب کنید، روشنایی را با اسلایدر تنظیم کنید یا مقادیر دقیق را مستقیماً وارد کنید. هر فرمت در زمان واقعی بهروز میشود و میتوانید با یک کلیک هر کد رنگی را کپی کنید.
درک مدلهای رنگ
پروژههای مختلف به فرمتهای رنگی متفاوتی نیاز دارند. در اینجا توضیح میدهیم که هر کدام چه کاربردی دارند:
RGB (قرمز، سبز، آبی)
RGB با ترکیب نور قرمز، سبز و آبی کار میکند - همان روشی که نمایشگر شما هم اکنون رنگها را نمایش میدهد. هر مؤلفه از 0 تا 255 متغیر است:
- RGB(255, 0, 0) = قرمز خالص
- RGB(0, 255, 0) = سبز خالص
- RGB(0, 0, 255) = آبی خالص
- RGB(255, 255, 255) = سفید
- RGB(0, 0, 0) = سیاه
زمان استفاده از RGB: هر کار دیجیتالی - وبسایتها، اپلیکیشنهای موبایل، ویرایش ویدیو یا گرافیک مبتنی بر صفحه نمایش. این زبان بومی نمایشگرها است، به همین دلیل ابزارهایی مانند CSS مستقیماً از توابع rgb() و rgba() پشتیبانی میکنند. طبق مشخصات ماژول رنگ W3C CSS، RGB مدل رنگی اساسی برای استانداردهای وب است.
هگزادسیمال (Hex)
کدهای هگز در واقع مقادیر RGB هستند که به جای پایه 10، در پایه 16 نوشته میشوند. یک رنگ هگز مانند #FF5733 است، که در آن:
- نماد
#نشاندهنده کد هگز است - دو کاراکتر اول = قرمز (00-FF)
- دو کاراکتر میانی = سبز (00-FF)
- دو کاراکتر آخر = آبی (00-FF)
#FF0000= قرمز،#00FF00= سبز،#0000FF= آبی
گاهی اوقات میانبر 3 کاراکتری مانند #F00 به جای #FF0000 را میبینید - این زمانی کار میکند که هر کانال رنگ رقم تکراری داشته باشد.
زمان استفاده از Hex: توسعه وب کاربرد اصلی آن است. CSS همیشه از نماد هگز پشتیبانی کرده و اکثر توسعهدهندگان آن را سریعتر از rgb() مییابند. یک نکته رایج: فراموش کردن نماد # بدون سر و صدا استایلهای شما را خراب میکند، زیرا مرورگرها آن را به عنوان رنگ معتبر تشخیص نمیدهند.
CMYK (سایان، مجنتا، زرد، کلید/سیاه)
CMYK مدل رنگی مورد استفاده چاپگرها است. برخلاف RGB (که نور را اضافه میکند)، CMYK آن را کم میکند - با ترکیب جوهرها روی کاغذ سفید:
- هر مؤلفه از 0% تا 100% متغیر است
- CMYK(0, 100, 100, 0) = قرمز
- CMYK(100, 0, 100, 0) = سبز
- CMYK(0, 0, 0, 100) = جوهر سیاه خالص
- CMYK(0, 0, 0, 0) = بدون جوهر (کاغذ سفید نمایان میشود)
زمان استفاده از CMYK: طراحی برای چاپ - کارت ویزیت، بروشورها، مجلات، بستهبندی. واقعیت این است که بسیاری از رنگهای RGB درخشان را نمیتوان با جوهرهای CMYK بازتولید کرد. آن آبی الکتریکی درخشانی که روی صفحه میبینید؟ هنگام چاپ کدرتر به نظر خواهد رسید. طراحان حرفهای همیشه قبل از ارسال فایلها به چاپگر، تبدیلات CMYK را پیشنمایش میکنند تا از بروز غافلگیری جلوگیری شود.
HSV (رنگ، اشباع، مقدار)
HSV رنگ را به سه مؤلفه شهودی تقسیم میکند:
- رنگ: خانواده رنگ (0-360°) - 0° قرمز، 120° سبز، 240° آبی
- اشباع: چقدر زنده یا خاکستری (0-100%) - 0% خاکستری، 100% کاملاً اشباع
- مقدار: چقدر روشن یا تیره (0-100%) - 0% سیاه، 100% روشنایی کامل
چرا HSV مهم است: این مدل با نحوه تفکر طبیعی انسان درباره رنگ مطابقت دارد. آبی تیرهتری میخواهید؟ مقدار را کاهش دهید. آبی کمرنگتری میخواهید؟ اشباع را کاهش دهید. به همین دلیل HSV برای انتخابگرهای رنگی تعاملی مانند این ایدهآل است، جایی که یک رنگ را در طیف انتخاب میکنید و روشنایی را با یک لغزنده تنظیم میکنید.
تبدیل رنگ فرمولها
انتخابکننده رنگ به طور خودکار بین مدلهای مختلف رنگ با استفاده از این فرمولهای ریاضی تبدیل میشود:
تبدیل RGB به Hex
برای تبدیل RGB به هگزادسیمال: ۱. تبدیل هر مؤلفه RGB (۰-۲۵۵) به یک عدد هگزادسیمال دو رقمی ۲. ترکیب سه مقدار هگزادسیمال با پیشوند #
جایی که toHex() یک عدد دهدهی را به نمایش هگزادسیمال آن تبدیل میکند.
تبدیل RGB به CMYK
تبدیل از RGB به CMYK شامل این مراحل است:
۱. نرمالسازی مقادیر RGB به محدوده ۰-۱ ۲. محاسبه مؤلفه کلید سیاه (K) ۳. محاسبه C، M و Y بر اساس K
تبدیل RGB به HSV
تبدیل RGB به HSV:
برای Hue (H):
0° & \text{اگر } \Delta = 0 \\ 60° \times (\frac{G' - B'}{\Delta} \mod 6) & \text{اگر } C_{max} = R' \\ 60° \times (\frac{B' - R'}{\Delta} + 2) & \text{اگر } C_{max} = G' \\ 60° \times (\frac{R' - G'}{\Delta} + 4) & \text{اگر } C_{max} = B' \end{cases}$$ برای Saturation (S): $$S = \begin{cases} 0 & \text{اگر } C_{max} = 0 \\ \frac{\Delta}{C_{max}} \times 100\% & \text{در غیر این صورت} \end{cases}$$ برای Value (V): $$V = C_{max} \times 100\%$$ ## چگونه از انتخابگر رنگ استفاده کنیم سه روش برای کار با رنگها: کلیک روی طیف، وارد کردن مقادیر دقیق یا تنظیم با اسلایدر. هر روشی که برای گردش کار شما طبیعیتر است را انتخاب کنید. ### انتخاب رنگها به صورت بصری روی **طیف رنگ** در هر نقطه کلیک کنید تا سایهای را انتخاب کنید. موقعیت افقی، رنگ (قرمز، سبز، آبی و غیره) را انتخاب میکند، در حالی که موقعیت عمودی اشباع (زنده یا کم رنگ) را کنترل میکند. پیشنمایش بلافاصله بهروز میشود تا دقیقاً ببینید چه چیزی را دریافت میکنید. اسلایدر **روشنایی** زیر طیف را بکشید تا رنگ خود را روشنتر یا تیرهتر کنید. این مؤلفه "مقدار" در اصطلاحات HSV را تنظیم میکند - به سمت چپ تیره میکند، به سمت راست روشن میکند. ### ورود مقادیر دقیق رنگ از قبل رنگی که نیاز دارید را میشناسید؟ مستقیماً آن را وارد کنید: **فرمت هگز:** کدهایی مانند `#FF5733` را وارد کنید. میتوانید `#` را شامل یا حذف کنید - ابزار هر دو را پشتیبانی میکند. با فرمت کوتاه 3 رقمی نیز کار میکند (`#F37`). **فرمت RGB:** مقادیر 0-255 را برای قرمز، سبز و آبی وارد کنید. اگر اشتباهاً 300 را وارد کنید، به طور خودکار در 255 محدود میشود. **فرمت CMYK:** درصدهای (0-100) برای هر جزء جوهر را وارد کنید. هنگام تطبیق رنگها با مشخصات یک طراح چاپی مفید است. هر فرمت دیگری را در زمان واقعی بهروز میکند. کد هگز را تغییر دهید، RGB/CMYK به طور خودکار تنظیم میشوند. ### کپی کدهای رنگ روی دکمه کپی (آیکون کلیپبورد) در کنار هر فرمت رنگ کلیک کنید. یک تأیید سریع "کپی شد!" را مشاهده خواهید کرد، سپس مقدار را هر جا که نیاز دارید - فایلهای CSS، نرمافزارهای طراحی، مستندات و غیره - جایگذاری کنید. **نکته حرفهای:** هنگام کار در چندین فایل یا برنامه، این ابزار را در یک برگه مرورگر باز نگه دارید. میتوانید به سرعت مقادیر رنگ را مرجع و کپی کنید بدون اینکه محیط را تغییر دهید. ## کاربردهای دنیای واقعی ### توسعه وب شما در حال ساخت یک تغییردهنده حالت تاریک هستید و به تنوع رنگ نیاز دارید. با رنگ اصلی برند خود در فرمت هگز (مثلاً `#3B82F6`) شروع کنید، سپس از لغزنده روشنایی برای تولید نسخههای تیرهتر برای پسزمینهها (`#1E3A8A`) و نسخههای روشنتر برای حالتهای هاور (`#60A5FA`) استفاده کنید. هر کد هگز را مستقیماً در ویژگیهای سفارشی CSS خود کپی کنید. هنگام کار با شفافیت، مقادیر RGB را بردارید و آنها را در توابع `rgba()` استفاده کنید. برای مثال، `rgb(59, 130, 246)` به `rgba(59, 130, 246, 0.8)` برای یک روکش با شفافیت 80% تبدیل میشود. سناریوی رایج: یک مشتری یک طراحی Figma با رنگهای مشخص شده در RGB ارائه میدهد، اما شما کدهای هگز را در CSS ترجیح میدهید. به جای محاسبه دستی، آنها را اینجا تبدیل کنید. ### طراحی گرافیک برای چاپ اینجا CMYK بسیار حیاتی میشود. شما یک پوستر با رنگهای RGB روی صفحه نمایش طراحی کردهاید، اما قبل از ارسال به چاپخانه، مقادیر CMYK را بررسی کنید. آن سایان الکتریکی که انتخاب کردهاید (RGB 0، 255، 255) به CMYK(100، 0، 0، 0) تبدیل میشود - که خوب به نظر میرسد. اما آن سبز روشن صفحه نمایش (RGB 0، 255، 0) ممکن است هنگام چاپ به طور قابل توجهی تغییر کند. گردش کار حرفهای: رنگهای صفحه نمایش خود را اینجا وارد کنید، تبدیلهای CMYK را یادداشت کنید، سپس آنها را در حالت پیشنمایش CMYK نرمافزار طراحی خود به صورت بصری مقایسه کنید. اگر رنگها بیش از حد تغییر میکنند، قبل از نهایی کردن طراحی، انتخابهای خود را تنظیم کنید. این از مکالمه "روی صفحه نمایش متفاوت به نظر میرسید" با چاپخانه جلوگیری میکند. ### سیستمهای طراحی UI/UX ساخت یک سیستم طراحی نیاز به مقیاسهای رنگی یکنواخت دارد. با یک رنگ اصلی شروع کنید، سپس 5-10 تغییر روشنایی برای حالتهای مختلف UI ایجاد کنید. لغزنده روشنایی این کار را سریع میکند - بدون نیاز به محاسبات ذهنی. برای دسترسیپذیری، به کنتراست کافی بین متن و پسزمینهها نیاز دارید. اگرچه این ابزار نسبتهای کنتراست را محاسبه نمیکند (برای این کار به یک [بررسیکننده کنتراست WCAG](https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html) اختصاصی نیاز دارید)، به شما کمک میکند تا سریعاً سایههای مختلف را امتحان کنید تا ترکیباتی که کار میکنند را پیدا کنید. سناریوی واقعی: دکمه اصلی شما از `#2563EB` استفاده میکند، اما متن روی آن پسزمینه از الزامات کنتراست عبور نمیکند. پسزمینه را روشنتر یا متن را تیرهتر کنید - از پیشنمایش برای آزمایش سریع گزینهها استفاده کنید. ### هنر دیجیتال و تصویرسازی در حال کار روی یک نقاشی دیجیتال هستید و به هماهنگی رنگی یکنواخت نیاز دارید؟ یک رنگ پایه را در طیف انتخاب کنید، سپس با تنظیم فقط اشباع و روشنایی، تغییراتی ایجاد کنید. این باعث میشود پالت شما منسجم بماند بدون پرشهای رنگی تصادفی. بسیاری از هنرمندان دیجیتال یک انتخابکننده رنگ را در حین نقاشی باز نگه میدارند تا سریعاً رنگهای مرجع را بردارند و تبدیل کنند. یک تن سایه کامل در یک عکس مرجع میبینید؟ روی آن کلیک کنید (اگر قبلاً مقدار آن را استخراج کردهاید)، RGB را بردارید و آن را در Photoshop، Procreate یا Krita پیست کنید. ### آموزش رنگ و آزمایش میخواهید بفهمید مدلهای رنگ چگونه به هم مرتبط هستند؟ هر رنگی را انتخاب کنید و ببینید چگونه مقادیر آن در RGB، Hex، CMYK و HSV تغییر میکند. توجه کنید که قرمز خالص (RGB 255، 0، 0) برابر با `#FF0000` است، اما معادل CMYK آن 0، 100، 100، 0 است - اعداد کاملاً متفاوت که نشاندهنده همان رنگ ادراک شده هستند. این بازخورد بصری به دانشجویان کمک میکند تا درک کنند چرا RGB از ترکیب افزایشی (ترکیب نور) و CMYK از ترکیب کاهشی (ترکیب جوهر) استفاده میکند. ماهیت تعاملی مفاهیم انتزاعی را ملموس میکند. ## ابزارهای رنگ دیگری که ممکن است نیاز داشته باشید این ابزار بر انتخاب و تبدیل رنگهای انفرادی تمرکز دارد. بسته به پروژه شما، ممکن است همچنین به موارد زیر نیاز داشته باشید: **تولیدکنندههای پالت** (Adobe Color، Coolors) زمانی که به چندین رنگ هماهنگ بر اساس نظریه رنگ - طرحهای مکمل، سهتایی یا مشابه نیاز دارید. **افزونههای مرورگر** (ColorZilla، Eye Dropper) برای استخراج رنگها مستقیماً از هر وبسایت یا عنصر صفحه. عالی برای مطابقت با طراحیهای موجود. **بررسیکنندههای کنتراست** برای کار در زمینه دسترسیپذیری. [بررسیکننده کنتراست WebAIM](https://webaim.org/resources/contrastchecker/) آزمایش میکند که آیا ترکیبات متن/پسزمینه شما استانداردهای WCAG را برآورده میکنند. **سیستمهای Pantone/RAL** برای مطابقت دقیق رنگ چاپی در بین چاپخانهها و مواد مختلف. این جعبههای نمونه فیزیکی مراجع استانداردی را ارائه میدهند که ابزارهای دیجیتال نمیتوانند دقیقاً آنها را بازتولید کنند. ## ایجاد رنگهای در دسترس حدود ۸٪ از مردان و ۰.۵٪ از زنان نوعی از نقص دید رنگی دارند. در اینجا نحوه طراحی فراگیر آمده است: **هرگز از رنگ به تنهایی** برای انتقال معنا استفاده نکنید. اگر فرم شما خطاها را با رنگ قرمز نشان میدهد، یک آیکون یا برچسب متنی نیز اضافه کنید. نمودارهایی با خطوط رنگی متفاوت؟ الگوها، برچسبها یا هر دو را اضافه کنید. **نسبتهای کنتراست را بررسی کنید** با استفاده از ابزارهایی مانند [بررسی کننده کنتراست WebAIM](https://webaim.org/resources/contrastchecker/). متن معمولی به حداقل نسبت ۴.۵:۱ در مقابل پسزمینه خود نیاز دارد، متن بزرگ به ۳:۱. طبق [راهنمای WCAG 2.1](https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html)، این خوانایی برای کاربران با دید نسبتاً ضعیف را تضمین میکند. **از ترکیبات مشکلساز اجتناب کنید:** قرمز-سبز رایجترین مشکل است (پروتانوپیا و دوتراونوپیا بر درک قرمز و سبز تأثیر میگذارند). آبی-زرد برای افراد مبتلا به تریتانوپیا مشکل ایجاد میکند. طراحیهای خود را با شبیهسازهایی مانند [Coblis](https://www.color-blindness.com/coblis-color-blindness-simulator/) آزمایش کنید تا ببینید چگونه برای کاربران با انواع مختلف نقص دید رنگی به نظر میرسند. **از پالتهای دوستدار افراد کمبینا** در صورت امکان استفاده کنید. آبیها، نارنجیها و زردها معمولاً به خوبی با هم کار میکنند زیرا در اکثر انواع کمبینایی رنگ قابل تشخیص هستند. ## سؤالات متداول ### تفاوت RGB و CMYK چیست؟ RGB برای صفحهنمایش و CMYK برای چاپ است. صفحهنمایشها رنگها را با گسیل نور قرمز، سبز و آبی (ترکیب افزایشی) ایجاد میکنند، در حالی که چاپگرها رنگها را با لایهگذاری جوهرهای سایان، ماژنتا، زرد و سیاه روی کاغذ (ترکیب کاهشی) میسازند. RGB میتواند رنگهای روشنتر و زندهتری نسبت به CMYK تولید کند زیرا نور پالت رنگی گستردهتری نسبت به جوهر دارد. به همین دلیل رنگهای صفحهنمایش معمولاً در چاپ کدرتر به نظر میرسند. ### چرا رنگهایم هنگام چاپ متفاوت به نظر میرسند؟ صفحهنمایشها نور را گسیل میکنند، کاغذ آن را بازتاب میدهد - این فرآیندهایی بنیادا متفاوت هستند. علاوه بر این، RGB میلیونها رنگی را پوشش میدهد که جوهرهای CMYK نمیتوانند آنها را بازتولید کنند. کالیبراسیون صفحهنمایش، کیفیت کاغذ و تغییرات جوهر تغییرپذیری بیشتری ایجاد میکنند. همیشه قبل از چاپ مقادیر CMYK را بررسی کنید و برای کارهای مهم تطبیق رنگ، نمونههای فیزیکی درخواست دهید. ### چگونه کدهای هگز رنگهایی که آنلاین میبینم را دریافت کنم؟ از ابزارهای توسعهدهنده مرورگر استفاده کنید. در Chrome یا Firefox، روی هر المان کلیک راست کنید، "Inspect" را انتخاب کنید، سپس روی مربع کوچک رنگ در پنل استایلها کلیک کنید. این یک انتخابگر رنگ باز میکند که کد هگز را نشان میدهد. افزونههای مرورگر مانند ColorZilla این کار را حتی سریعتر میکنند - آنها به شما اجازه میدهند در هر جای صفحه کلیک کنید تا مقدار رنگ آن را بگیرید. ### علامت # در کدهای هگز چه معنایی دارد؟ این فقط یک پیشوند است که به مرورگر میگوید "این یک کد رنگ هگزادسیمال است". این استاندارد از مشخصات اولیه HTML و CSS میآید. شش حرف بعد از `#` نشاندهنده مقادیر RGB در پایه ۱۶ هستند: دو رقم برای قرمز، دو رقم برای سبز، دو رقم برای آبی. بدون `#`، مرورگرها آن را به عنوان رنگ شناسایی نمیکنند. ### چرا کدهای هگز ۳ رقمی کار میکنند؟ آنها میانبری هستند برای زمانی که هر کانال رنگ تکرار میشود. `#F00` به `#FF0000` (قرمز) گسترش مییابد، `#C9C` به `#CC99CC` (بنفش روشن) تبدیل میشود. این میانبر در دهه ۱۹۹۰ برای کاهش حجم فایلها در زمانی که پهنای باند گران بود، ایجاد شد. امروزه هنوز برای رنگهای ساده مفید است. ### آیا تبدیلهای رنگ دقیق هستند؟ تبدیلهای RGB به هگز از نظر ریاضی دقیق هستند - آنها همان مقادیر در پایههای عددی مختلف هستند. تبدیلهای RGB به CMYK تقریبی هستند زیرا شما بین فضاهای رنگی متفاوت (نور در مقابل جوهر) تبدیل میکنید. این ابزار از [استانداردهای پروفایل رنگ ICC](http://www.color.org/specification/ICC1v42_2006-05.pdf) برای این تبدیلها استفاده میکند، که همان رویکرد نرمافزارهای طراحی حرفهای است. ### چگونه ترکیبهای رنگی در دسترس ایجاد کنم؟ پس از انتخاب رنگها، از یک بررسیکننده کنتراست مانند [ابزار WebAIM](https://webaim.org/resources/contrastchecker/) استفاده کنید. برای متن معمولی به نسبت ۴.۵:۱، برای متن بزرگ به نسبت ۳:۱ نیاز دارید. از ترکیبهای قرمز-سبز اجتناب کنید (سختترین برای کاربران دارای اختلال رنگی). در صورت تردید، متن تیرهتر روی پسزمینههای روشنتر یا برعکس - تفاوت کافی در روشنایی مهمترین چیز است. ### آیا میتوانم رنگها را از تصاویر انتخاب کنم؟ مستقیماً در این ابزار، خیر. از افزونه مرورگر مانند ColorZilla استفاده کنید، یا از تصویر اسکرینشات بگیرید و از انتخابگر رنگ سیستم عامل خود استفاده کنید (Digital Color Meter در macOS، PowerToys Color Picker در Windows). پس از دریافت مقدار رنگ، آن را اینجا وارد کنید تا بین فرمتها تبدیل شود. ### چرا برخی رنگهای RGB به خوبی به CMYK تبدیل نمیشوند؟ CMYK "گاموت" (محدوده رنگهای قابل بازتولید) محدودتری نسبت به RGB دارد. آبیهای روشن، سبزهای زنده و نارنجیهای الکتریکی اغلب خارج از آنچه جوهرهای CMYK میتوانند فیزیکاً ایجاد کنند، هستند. وقتی این اتفاق میافتد، چاپگر نزدیکترین تطبیق ممکن را جایگزین میکند که معمولاً کمرنگتر به نظر میرسد. طراحان چاپ حرفهای اغلب با رنگهای مطمئن CMYK شروع میکنند تا از این مشکل اجتناب کنند. ## نمونه کدهای تبدیل رنگ در اینجا چند نمونه کد نشان داده میشود که نحوه تبدیل بین فرمتهای مختلف رنگ را نشان میدهند:1// تبدیل RGB به Hex
2function rgbToHex(r, g, b) {
3 const toHex = (c) => {
4 const hex = Math.round(c).toString(16);
5 return hex.length === 1 ? '0' + hex : hex;
6 };
7
8 return `#${toHex(r)}${toHex(g)}${toHex(b)}`;
9}
10
11// تبدیل Hex به RGB
12function hexToRgb(hex) {
13 // حذف # در صورت وجود
14 const cleanHex = hex.startsWith('#') ? hex.slice(1) : hex;
15
16 // پشتیبانی از هگز 3 و 6 رقمی
17 const expandedHex = cleanHex.length === 3
18 ? cleanHex.split('').map(char => char + char).join('')
19 : cleanHex;
20
21 const r = parseInt(expandedHex.substring(0, 2), 16);
22 const g = parseInt(expandedHex.substring(2, 4), 16);
23 const b = parseInt(expandedHex.substring(4, 6), 16);
24
25 return { r, g, b };
26}
27
28// تبدیل RGB به CMYK
29function rgbToCmyk(r, g, b) {
30 // نرمالسازی مقادیر RGB
31 const normalizedR = r / 255;
32 const normalizedG = g / 255;
33 const normalizedB = b / 255;
34
35 // محاسبه K (سیاه)
36 const k = 1 - Math.max(normalizedR, normalizedG, normalizedB);
37
38 // برخورد با سیاه خالص
39 if (k === 1) {
40 return { c: 0, m: 0, y: 0, k: 100 };
41 }
42
43 // محاسبه C، M، Y
44 const c = ((1 - normalizedR - k) / (1 - k)) * 100;
45 const m = ((1 - normalizedG - k) / (1 - k)) * 100;
46 const y = ((1 - normalizedB - k) / (1 - k)) * 100;
47
48 return {
49 c: Math.round(c),
50 m: Math.round(m),
51 y: Math.round(y),
52 k: Math.round(k * 100)
53 };
54}
55
56// مثال استفاده
57const rgb = { r: 255, g: 0, b: 0 }; // قرمز خالص
58console.log(`Hex: ${rgbToHex(rgb.r, rgb.g, rgb.b)}`);
59console.log(`CMYK:`, rgbToCmyk(rgb.r, rgb.g, rgb.b));
601# تبدیل RGB به Hex
2def rgb_to_hex(r, g, b):
3 return f'#{r:02x}{g:02x}{b:02x}'
4
5# تبدیل Hex به RGB
6def hex_to_rgb(hex_color):
7 # حذف # در صورت وجود
8 hex_color = hex_color.lstrip('#')
9
10 # پشتیبانی از هگز 3 و 6 رقمی
11 if len(hex_color) == 3:
12 hex_color = ''.join([c*2 for c in hex_color])
13
14 return {
15 'r': int(hex_color[0:2], 16),
16 'g': int(hex_color[2:4], 16),
17 'b': int(hex_color[4:6], 16)
18 }
19
20# تبدیل RGB به CMYK
21def rgb_to_cmyk(r, g, b):
22 # نرمالسازی مقادیر RGB
23 r_norm = r / 255
24 g_norm = g / 255
25 b_norm = b / 255
26
27 # محاسبه K (سیاه)
28 k = 1 - max(r_norm, g_norm, b_norm)
29
30 # برخورد با سیاه خالص
31 if k == 1:
32 return {'c': 0, 'm': 0, 'y': 0, 'k': 100}
33
34 # محاسبه C، M، Y
35 c = ((1 - r_norm - k) / (1 - k)) * 100
36 m = ((1 - g_norm - k) / (1 - k)) * 100
37 y = ((1 - b_norm - k) / (1 - k)) * 100
38
39 return {
40 'c': round(c),
41 'm': round(m),
42 'y': round(y),
43 'k': round(k * 100)
44 }
45
46# مثال استفاده
47rgb = {'r': 0, 'g': 128, 'b': 255} # آبی آسمانی
48hex_color = rgb_to_hex(rgb['r'], rgb['g'], rgb['b'])
49cmyk = rgb_to_cmyk(rgb['r'], rgb['g'], rgb['b'])
50
51print(f"Hex: {hex_color}")
52print(f"CMYK: C={cmyk['c']}%, M={cmyk['m']}%, Y={cmyk['y']}%, K={cmyk['k']}%")
531public class ColorConverter {
2 // تبدیل RGB به Hex
3 public static String rgbToHex(int r, int g, int b) {
4 return String.format("#%02x%02x%02x", r, g, b);
5 }
6
7 // تبدیل Hex به RGB
8 public static int[] hexToRgb(String hexColor) {
9 // حذف # در صورت وجود
10 if (hexColor.startsWith("#")) {
11 hexColor = hexColor.substring(1);
12 }
13
14 // پشتیبانی از هگز 3 و 6 رقمی
15 if (hexColor.length() == 3) {
16 String expandedHex = "";
17 for (char c : hexColor.toCharArray()) {
18 expandedHex += c + String.valueOf(c);
19 }
20 hexColor = expandedHex;
21 }
22
23 int r = Integer.parseInt(hexColor.substring(0, 2), 16);
24 int g = Integer.parseInt(hexColor.substring(2, 4), 16);
25 int b = Integer.parseInt(hexColor.substring(4, 6), 16);
26
27 return new int[]{r, g, b};
28 }
29
30 // تبدیل RGB به CMYK
31 public static double[] rgbToCmyk(int r, int g, int b) {
32 // نرمالسازی مقادیر RGB
33 double normalizedR = r / 255.0;
34 double normalizedG = g / 255.0;
35 double normalizedB = b / 255.0;
36
37 // محاسبه K (سیاه)
38 double k = 1 - Math.max(Math.max(normalizedR, normalizedG), normalizedB);
39
40 // برخورد با سیاه خالص
41 if (k == 1) {
42 return new double[]{0, 0, 0, 100};
43 }
44
45 // محاسبه C، M، Y
46 double c = ((1 - normalizedR - k) / (1 - k)) * 100;
47 double m = ((1 - normalizedG - k) / (1 - k)) * 100;
48 double y = ((1 - normalizedB - k) / (1 - k)) * 100;
49
50 return new double[]{
51 Math.round(c),
52 Math.round(m),
53 Math.round(y),
54 Math.round(k * 100)
55 };
56 }
57
58 public static void main(String[] args) {
59 // مثال استفاده
60 int r = 75, g = 0, b = 130; // بنفش
61 String hexColor = rgbToHex(r, g, b);
62 double[] cmyk = rgbToCmyk(r, g, b);
63
64 System.out.println("Hex: " + hexColor);
65 System.out.printf("CMYK: C=%.0f%%, M=%.0f%%, Y=%.0f%%, K=%.0f%%\n",
66 cmyk[0], cmyk[1], cmyk[2], cmyk[3]);
67 }
68}
69مراجع و مطالعات بیشتر
- ماژول رنگ CSS سطح 4 W3C - مشخصات رسمی رنگ وب
- دستورالعملهای کنتراست WCAG 2.1 - استانداردهای دسترسیپذیری برای کنتراست رنگ
- بررسی کننده کنتراست WebAIM - آزمون نسبتهای کنتراست رنگ
- استانداردهای پروفایل رنگ ICC - مشخصات فنی برای تبدیلات رنگ
- اسناد وب MDN: مقادیر رنگ CSS - راهنمای جامع فرمتهای رنگ وب