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

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

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

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

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

然而,管理這些顏色非常具有挑戰性。每個封面必須列印四次,每種顏色列印一次:青色、洋紅色、黃色和基底色(黑色)——縮寫為 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 GR BG 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]刪除
最新教學 更多>
  • 將 CSV 轉換為 JSON:快速指南 + 線上工具
    將 CSV 轉換為 JSON:快速指南 + 線上工具
    CSV(逗號分隔值)是一種廣泛使用的儲存表格資料的格式,常見於電子表格和資料交換。雖然 CSV 對於資料儲存來說簡單且有效,但 JSON(JavaScript 物件表示法)已成為在 Web 應用程式中處理結構化資料的首選格式。無論您是建立 API、匯入/匯出數據,還是只是處理 JavaScript ...
    程式設計 發佈於2024-11-08
  • RGFW 底層:XDrag &#n Drop
    RGFW 底層:XDrag &#n Drop
    Introduction To handle Drag 'n Drop events with X11, you must use the XDnD protocol. Although the XDnD protocol is significantly more complic...
    程式設計 發佈於2024-11-08
  • 關於 React useState Hook 你需要了解的一切 - 裡面的實際例子
    關於 React useState Hook 你需要了解的一切 - 裡面的實際例子
    ReactJS useState Hook:初学者指南 介绍 ReactJS 是一个用于构建用户界面的流行 JavaScript 库,引入了 hooks 来简化和增强组件逻辑。 React 中最常用的钩子之一是 useState 钩子,它管理组件的状态。了解其工作原...
    程式設計 發佈於2024-11-08
  • 招聘 Django 開發人員
    招聘 Django 開發人員
    大家好,我是Nicholas,一名軟體開發人員,在建立強大的Web 應用程式方面擁有3 年經驗,利用Python、JavaScript 和Ruby 提供最新行業的業務解決方案我目前正在尋找全職機會來學習和發展我的技能,同時也提供我獨特的能力,例如毅力,團隊合作、有效溝通、跟隨力等。我希望與我們這一代...
    程式設計 發佈於2024-11-08
  • 我用C開發了神經網路庫
    我用C開發了神經網路庫
    用Python開發人工智慧對我來說相當困難,因為我以前從未使用過Python。但我懂 C 和數學,那為什麼我不能用 C 開發它? 我的故事就是這樣開始的。我決定開發它。 我首先在C播放清單中觀看了Tsoding Daily的ml。這對我來說是一個很好的資源。數學和神經網路的解釋非常棒!所以我用這...
    程式設計 發佈於2024-11-08
  • 四種原始形態的故事
    四種原始形態的故事
    在Computoria王国,一个充满逻辑和神秘的国度,住着四位高贵的存在,每一位都掌握着编程本身核心的钥匙。他们不像普通公民或流浪的陌生人;他们不像普通人。它们是存在的本质,是代码和计算蓬勃发展的土地上创造的气息和骨骼。 他们被所有人,无论老少,都知道这些永恒的名字:Int、Float、Str和Bo...
    程式設計 發佈於2024-11-08
  • 如何在 Python 中修改函數內的列表:透過引用傳遞或就地修改?
    如何在 Python 中修改函數內的列表:透過引用傳遞或就地修改?
    修改函數內的列表在函數中使用列表參數時,傳遞給函數的引用指向原始列表。函數內對 list_arg 變數所做的任何修改都僅限於其局部範圍,不會影響原始列表。 要規避此問題並修改原始列表,需要直接將元素分配給列表而不是將整個列表重新分配給新值。這是一個例子:def function1(list_arg)...
    程式設計 發佈於2024-11-08
  • React Hooks:詳細說明
    React Hooks:詳細說明
    React Hooks 是允許您從功能元件「掛鉤」React 狀態和生命週期功能的函數。 Hooks 在 React 16.8 中引入,讓您無需編寫類別元件即可使用狀態和其他 React 功能。 我們來分解Hooks背後的核心概念: 1. 為什麼要使用 React Hooks? 在...
    程式設計 發佈於2024-11-08
  • 了解 JavaScript 產生器:強大的程式碼流控制工具
    了解 JavaScript 產生器:強大的程式碼流控制工具
    生成器是 JavaScript 中最强大的功能之一,它允许我们编写可以根据需要暂停和恢复的代码。与一次执行所有代码的常规函数​​不同,生成器使用延迟执行,增量返回值,从而更容易处理数据序列、迭代或长时间运行的进程。 发电机如何工作? 在JavaScript中,生成器是使用functi...
    程式設計 發佈於2024-11-08
  • 如何在 groupby 作業期間維護 Pandas DataFrame 中的其他欄位?
    如何在 groupby 作業期間維護 Pandas DataFrame 中的其他欄位?
    在Groupby 操作期間維護其他列對pandas 資料框執行groupby 操作時,通常需要保留不屬於的列參與分組或聚合過程。預設情況下,操作完成後將刪除這些其他欄位。如果保留的列包含有價值的信息,這可能會出現問題。 考慮以下資料框: item diff otherstuff ...
    程式設計 發佈於2024-11-08
  • 根據您文章的內容,以下是一些適合問答格式的標題選項:

選項 1(直接):

* 如何從 OpentelemetryContext Pr 中的字串追蹤 ID 建構跨度
    根據您文章的內容,以下是一些適合問答格式的標題選項: 選項 1(直接): * 如何從 OpentelemetryContext Pr 中的字串追蹤 ID 建構跨度
    在 Opentelemetry 中根據追蹤 ID 建構 Span上下文傳播通常用於檢索父追蹤 ID 並建立子 Span。但是,在使用標頭進行訊息交換的情況下,需要替代方法。 要從字串追蹤ID 建立範圍,可以依照下列步驟操作:建構一個解析Trace 和Span ID 的函式:func construc...
    程式設計 發佈於2024-11-08
  • 如何將 JSON 字串轉換為 Python 字典?
    如何將 JSON 字串轉換為 Python 字典?
    如何將JSON 字串轉換為Python 字典JSON(JavaScript 物件表示法)是一種流行的資料格式,通常以於表示複雜的資料結構。在 Python 中,您可以使用 json 模組來處理 JSON 資料。 一個常見的任務是將 JSON 字串轉換為 Python 字典。這允許您以鍵值對的形式存取...
    程式設計 發佈於2024-11-08
  • 治療高血壓的整體阿育吠陀方法
    治療高血壓的整體阿育吠陀方法
    管理高血壓的整體阿育吠陀方法 阿育吠陀治療高血壓提供了一種自然和整體的方法來管理這一常見的健康問題。在阿育吠陀中,高血壓通常與能量的不平衡有關,特別是皮塔和瓦塔。這種古老的醫學體系旨在透過個人化治療和生活方式改變來恢復平衡並促進整體健康。 治療高血壓的阿育吠陀療法包括使用特定草藥,如阿朱那、南非醉...
    程式設計 發佈於2024-11-08
  • 如何設定 Y 軸範圍以豐富多個子圖佈局中的視覺化?
    如何設定 Y 軸範圍以豐富多個子圖佈局中的視覺化?
    設定子圖軸範圍背景在視覺化中處理多個子圖時,有必要控制每個子圖的軸範圍以確保正確的數據表示。本問題探討如何在雙子圖佈局中設定第二個子圖的 y 軸範圍。當 FFT 圖出現異常尖峰,導致所需資料不可見時,就會出現此問題。 解決方案要解決此問題,請在繪圖後使用 pylab.ylim([bottom, to...
    程式設計 發佈於2024-11-08
  • CSS 中的盒子模型:製作精確版面的終極指南
    CSS 中的盒子模型:製作精確版面的終極指南
    Web設計概念中,盒子模型(Box Model)是CSS中非常關注佈局設計的基礎知識領域。盒子模型解釋了頁面上元素的放置和定位方式,這會影響水平度和整體連貫性。 除了概述盒子模型的背景和邊框之外,本指南還指導您完成填充、邊距和盒子大小調整,以便您可以完全控制佈局。要開始專業級的 Web 專案設計,...
    程式設計 發佈於2024-11-08

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

Copyright© 2022 湘ICP备2022001581号-3