」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 從打字機到像素:CMYK、RGB 和建立色彩視覺化工具的旅程

從打字機到像素:CMYK、RGB 和建立色彩視覺化工具的旅程

發佈於2024-11-08
瀏覽:749

當我還是個孩子的時候,我出版了一本關於漫畫的粉絲雜誌。那是在我擁有計算機之前很久——它是用打字機、紙和剪刀創建的!

粉絲雜誌最初是黑白的,在我的學校複印的。隨著時間的推移,隨著它取得了更大的成功,我能夠負擔得起帶有彩色封面的膠印!

然而,管理這些顏色非常具有挑戰性。每個封面必須列印四次,每種顏色列印一次:青色、洋紅色、黃色和基底色(黑色)——縮寫為 CMYK。

這意味著我必須提供四張單獨的紙,每張都用黑色墨水列印,但對應於特定的顏色。

這是我發表的其中一期:

From Typewriters to Pixels: A Journey with CMYK, RGB, and Building a Color Visualizer

您在上圖中看到的所有黃色都是我用黑色墨水在“黃色”紙上手繪的。對於膚色,我使用了一種叫做“光柵點”的東西。您可以購買不同密度黑點的床單。你可以剪下這些點並將它們應用到——在本例中,應用到「紅色」紙上。

我在一張燈台上工作——一張帶有內置照明的玻璃頂繪圖桌——這樣我就可以透過各種紙張看到它們,同時正確對齊它們。

非常耗時,但它激發了人們對理解顏色的終生興趣——以及打印顏色和屏幕顏色之間的巨大差異!

雖然 CMYK 僅限於四種顏色,但它仍然相對容易掌握。我們都曾在紙上使用過色鉛筆,並且對顏色如何混合有直觀的感覺。 CMYK 是減色色彩模型。你從一張白紙開始,當你添加更多墨水時,你實際上是在減去光線。組合所有顏色會讓你走向黑色。如果不塗任何墨水,紙張會保持白色,因為它會反射所有光線。

當我拿到第一台電腦時,我必須了解 RGB,它與 CMYK 非常不同。 RGB 是一種用於數位螢幕的加法顏色模型。在這裡,您正在混合光線本身 - 添加更多光線會使顏色更明亮,並使您接近白色。關閉所有RGB燈(R=0,G=0,B=0),螢幕變黑,因為沒有光發出。

當時作為圖形設計師,您必須校準螢幕,因為您在螢幕上看到的顏色和在列印中看到的顏色通常非常不同!


視覺化 RGB

RGB代表三種光源:紅、綠、藍。當燈關閉時,其值為0;當它完全上時,其值為255。當這些燈重疊時,它們會產生不同的顏色。

為了更好地理解 RGB 的工作原理,讓我們建立一個小工具:

From Typewriters to Pixels: A Journey with CMYK, RGB, and Building a Color Visualizer


超文本標記語言

R G R B G B

風格

首先,我們建立一個 9x8 的網格:

.rgb {
  all: unset;
  aspect-ratio: 9 / 8;
  container-type: inline-size;
  display: grid;
  font-size: 1.75cqi;
  grid-template-columns: repeat(9, 1fr);
  grid-template-rows: repeat(8, 1fr);
  width: 100%;
}

這是一個不尋常的尺寸,但那是因為我們的 R、G 和 B 圓是 5x5 並且 重疊

.r, .g, .b {
  aspect-ratio: 1 / 1;
  border-radius: 50%;
  display: grid;
  font-size: 5cqi;
  mix-blend-mode: difference;
}

.r、.g 和 .b 的 CSS 為:

.r {
  background-color: rgb(var(--r), 0, 0);
  grid-area: 1 / 3 / 6 / 8;
}

.g {
  background-color: rgb(0, var(--g), 0);
  grid-area: 4 / 1 / 9 / 6;
}

.b {
  background-color: rgb(0, 0, var(--b));
  grid-area: 4 / 5 / 9 / 10;
}

我最近經常使用網格區域。它允許您將網格項目放置在非常特定的位置:

行開始/列開始/行結束/列結束

如果啟用開發工具的網格視覺化工具

,則更容易將其視覺化

From Typewriters to Pixels: A Journey with CMYK, RGB, and Building a Color Visualizer

您注意到三個 CSS 自訂屬性 --r、--g 和 --b 了嗎?我們將在一個小的 JS 片段中更新它們:

const rgb = document.querySelector('.rgb');
rgb.addEventListener('input', e => {
  const N = e.target;
  document.body.style.setProperty(`--${N.name}`, N.value);
})

基本上就是這樣。我添加了一些 元素和細微的調整…但我幾乎忘記提及 使視覺化工具正常工作的最重要的一行

混合混合模式:差異

在這裡閱讀相關內容 - 循環瀏覽所有模式非常有趣。


示範

這是一台 Codepen。點擊並編輯 R、G 和 B 下面的數字,注意頁面背景和所有三個圓圈的重疊部分如何變化。

版本聲明 本文轉載於:https://dev.to/madsstoumann/from-typewriters-to-pixels-a-journey-with-cmyk-rgb-and-building-a-color-visualizer-484b?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 在Java中如何為PNG文件添加坐標軸和標籤?
    在Java中如何為PNG文件添加坐標軸和標籤?
    如何用java 在現有png映像中添加軸和標籤的axes和labels如何註釋png文件可能具有挑戰性。與其嘗試可能導致錯誤和不一致的修改,不如建議在圖表創建過程中集成註釋。 使用JFReechArt import java.awt.color; 導入java.awt.eventqueue; 導...
    程式設計 發佈於2025-04-27
  • 如何修復\“常規錯誤:2006 MySQL Server在插入數據時已經消失\”?
    如何修復\“常規錯誤:2006 MySQL Server在插入數據時已經消失\”?
    How to Resolve "General error: 2006 MySQL server has gone away" While Inserting RecordsIntroduction:Inserting data into a MySQL database can...
    程式設計 發佈於2025-04-27
  • 您可以使用CSS在Chrome和Firefox中染色控制台輸出嗎?
    您可以使用CSS在Chrome和Firefox中染色控制台輸出嗎?
    在javascript console 中顯示顏色是可以使用chrome的控制台顯示彩色文本,例如紅色的redors,for for for for錯誤消息? 回答是的,可以使用CSS將顏色添加到Chrome和Firefox中的控制台顯示的消息(版本31或更高版本)中。要實現這一目標,請使用以下...
    程式設計 發佈於2025-04-27
  • 哪種在JavaScript中聲明多個變量的方法更可維護?
    哪種在JavaScript中聲明多個變量的方法更可維護?
    在JavaScript中聲明多個變量:探索兩個方法在JavaScript中,開發人員經常遇到需要聲明多個變量的需要。對此的兩種常見方法是:在單獨的行上聲明每個變量: 當涉及性能時,這兩種方法本質上都是等效的。但是,可維護性可能會有所不同。 第一個方法被認為更易於維護。每個聲明都是其自己的語句,使...
    程式設計 發佈於2025-04-27
  • 如何在Java字符串中有效替換多個子字符串?
    如何在Java字符串中有效替換多個子字符串?
    在java 中有效地替換多個substring,需要在需要替換一個字符串中的多個substring的情況下,很容易求助於重複應用字符串的刺激力量。 However, this can be inefficient for large strings or when working with nu...
    程式設計 發佈於2025-04-27
  • 如何高效地在一個事務中插入數據到多個MySQL表?
    如何高效地在一個事務中插入數據到多個MySQL表?
    mySQL插入到多個表中,該數據可能會產生意外的結果。雖然似乎有多個查詢可以解決問題,但將從用戶表的自動信息ID與配置文件表的手動用戶ID相關聯提出了挑戰。 使用Transactions和last_insert_id() 插入用戶(用戶名,密碼)值('test','tes...
    程式設計 發佈於2025-04-27
  • 如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    從python import codecs import codecs import codecs 導入 text = codecs.decode('這狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#帶有...
    程式設計 發佈於2025-04-27
  • 為什麼Microsoft Visual C ++無法正確實現兩台模板的實例?
    為什麼Microsoft Visual C ++無法正確實現兩台模板的實例?
    The Mystery of "Broken" Two-Phase Template Instantiation in Microsoft Visual C Problem Statement:Users commonly express concerns that Micro...
    程式設計 發佈於2025-04-27
  • Python元類工作原理及類創建與定制
    Python元類工作原理及類創建與定制
    python中的metaclasses是什麼? Metaclasses負責在Python中創建類對象。就像類創建實例一樣,元類也創建類。他們提供了對類創建過程的控制層,允許自定義類行為和屬性。 在Python中理解類作為對象的概念,類是描述用於創建新實例或對象的藍圖的對象。這意味著類本身是使用...
    程式設計 發佈於2025-04-27
  • 如何使用Python有效地以相反順序讀取大型文件?
    如何使用Python有效地以相反順序讀取大型文件?
    在python 中,如果您使用一個大文件,並且需要從最後一行讀取其內容,則在第一行到第一行,Python的內置功能可能不合適。這是解決此任務的有效解決方案:反向行讀取器生成器 == ord('\ n'): 緩衝區=緩衝區[:-1] ...
    程式設計 發佈於2025-04-27
  • 為什麼我的CSS背景圖像出現?
    為什麼我的CSS背景圖像出現?
    故障排除:CSS背景圖像未出現 ,您的背景圖像儘管遵循教程說明,但您的背景圖像仍未加載。圖像和样式表位於相同的目錄中,但背景仍然是空白的白色帆布。 而不是不棄用的,您已經使用了CSS樣式: bockent {背景:封閉圖像文件名:背景圖:url(nickcage.jpg); 如果您的html,cs...
    程式設計 發佈於2025-04-27
  • Go語言垃圾回收如何處理切片內存?
    Go語言垃圾回收如何處理切片內存?
    Garbage Collection in Go Slices: A Detailed AnalysisIn Go, a slice is a dynamic array that references an underlying array.使用切片時,了解垃圾收集行為至關重要,以避免潛在的內存洩...
    程式設計 發佈於2025-04-27
  • Java是否允許多種返回類型:仔細研究通用方法?
    Java是否允許多種返回類型:仔細研究通用方法?
    在Java中的多個返回類型:一種誤解類型:在Java編程中揭示,在Java編程中,Peculiar方法簽名可能會出現,可能會出現,使開發人員陷入困境,使開發人員陷入困境。 getResult(string s); ,其中foo是自定義類。該方法聲明似乎擁有兩種返回類型:列表和E。但這確實是如此嗎...
    程式設計 發佈於2025-04-27
  • Python不會對超範圍子串切片報錯的原因
    Python不會對超範圍子串切片報錯的原因
    在python中用索引切片範圍:二重性和空序列索引單個元素不同,該元素會引起錯誤,切片在序列的邊界之外沒有。 這種行為源於索引和切片之間的基本差異。索引一個序列,例如“示例” [3],返回一個項目。但是,切片序列(例如“示例” [3:4])返回項目的子序列。 索引不存在的元素時,例如“示例” [9...
    程式設計 發佈於2025-04-27
  • 如何在Java的全屏獨家模式下處理用戶輸入?
    如何在Java的全屏獨家模式下處理用戶輸入?
    Handling User Input in Full Screen Exclusive Mode in JavaIntroductionWhen running a Java application in full screen exclusive mode, the usual event ha...
    程式設計 發佈於2025-04-27

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3