色彩理論: プログラムで色をいじる
カラー パレット Web サイトである Colorify Rocks を最初に構築し始めたとき、プログラムによる色操作のウサギの穴がどれほど深くなるかわかりませんでした。シンプルな「カラーピッカーを作ってみよう」プロジェクトとして始まったものは、色彩理論、数学的色空間、アクセシビリティの考慮事項を巡る興味深い旅へと変わりました。今日は、このツールの構築中に学んだことと、独自の色の冒険に役立つかもしれないいくつかの Python コードを共有したいと思います。
色だけですが、どれくらい難しいでしょうか?
ああ、私の前を通り過ぎました。あなたはなんて純朴だったのでしょう!私の旅は、人々がカラー パレットを生成して保存できる Web サイトを構築するという単純な目標から始まりました。簡単ですよね? 16 進コードを取得して...ちょっと待って、HSL とは何ですか?そしてなぜ RGB が必要なのでしょうか? CMYK とはいったい何なのでしょうか?
私が何について話しているのか知りたいですか? #3B49DF のカラー分析をチェックしてください
これは、色変換を処理するために私が書いた最初のコードです。今ではその単純さに笑ってしまいます。
class Color: def __init__(self, hex_code): self.hex = hex_code.lstrip('#') # Past me: "This is probably all I need!" def to_rgb(self): # My first "aha!" moment with color spaces r = int(self.hex[0:2], 16) g = int(self.hex[2:4], 16) b = int(self.hex[4:6], 16) return f"rgb({r},{g},{b})"
すべては数学です
そして、色は基本的に単なる数学の仮面をかぶったものであることに気づいた瞬間が来ました。色空間間の変換は、高校以来触れていなかったアルゴリズムに飛び込むことを意味しました。コードは次のように進化しました
def _rgb_to_hsl(self): # This was my "mind-blown" moment r, g, b = [x/255 for x in (self.rgb['r'], self.rgb['g'], self.rgb['b'])] cmax, cmin = max(r, g, b), min(r, g, b) delta = cmax - cmin # The math that made me question everything I knew about colors h = 0 if delta != 0: if cmax == r: h = 60 * (((g - b) / delta) % 6) elif cmax == g: h = 60 * ((b - r) / delta + 2) else: h = 60 * ((r - g) / delta + 4) l = (cmax + cmin) / 2 s = 0 if delta == 0 else delta / (1 - abs(2 * l - 1)) return { 'h': round(h), 's': round(s * 100), 'l': round(l * 100) }
色には関係がある
私が Colorify Rocks 用に構築した最もエキサイティングな機能の 1 つは、カラー ハーモニー ジェネレーターでした。音符と同じように、色には相互の関係があることが分かりました。カラーハーモニーを実装する方法は次のとおりです:
def get_color_harmonies(self, color): """ This is probably my favorite piece of code in the entire project. It's like playing with a color wheel, but in code! """ h, s, l = color.hsl['h'], color.hsl['s'], color.hsl['l'] return { 'complementary': self._get_complementary(h, s, l), 'analogous': self._get_analogous(h, s, l), 'triadic': self._get_triadic(h, s, l), 'split_complementary': self._get_split_complementary(h, s, l) } def _get_analogous(self, h, s, l): # The magic numbers that make designers happy return [ self._hsl_to_hex((h - 30) % 360, s, l), self._hsl_to_hex(h, s, l), self._hsl_to_hex((h + 30) % 360, s, l) ]
アクセシビリティ
最も目を見張るものは、色覚異常を持つユーザーがフィードバックを送信したときでした。アクセシビリティを完全に見落としていました!これにより、色覚異常のシミュレーションを実装することになりました。
def simulate_color_blindness(self, color, type='protanopia'): """ This feature wasn't in my original plan, but it became one of the most important parts of Colorify Rocks """ matrices = { 'protanopia': [ [0.567, 0.433, 0], [0.558, 0.442, 0], [0, 0.242, 0.758] ], # Added more types after learning about different forms of color blindness 'deuteranopia': [ [0.625, 0.375, 0], [0.7, 0.3, 0], [0, 0.3, 0.7] ] } # Matrix multiplication that makes sure everyone can use our color palettes return self._apply_color_matrix(color, matrices[type])
Colorify Rocks が成長するにつれて、デザイナーはより多くの機能を求め始めました。大きいものは?色の色合いと色合い。これにより、いくつかの楽しい実験が始まりました:
def get_color_variations(self, color, steps=10): """ This started as a simple feature request and turned into one of our most-used tools """ return { 'shades': self._generate_shades(color, steps), 'tints': self._generate_tints(color, steps), 'tones': self._generate_tones(color, steps) }
以上が色彩理論: プログラムで色をいじるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Pythonは学習と使用が簡単ですが、Cはより強力ですが複雑です。 1。Python構文は簡潔で初心者に適しています。動的なタイピングと自動メモリ管理により、使いやすくなりますが、ランタイムエラーを引き起こす可能性があります。 2.Cは、高性能アプリケーションに適した低レベルの制御と高度な機能を提供しますが、学習しきい値が高く、手動メモリとタイプの安全管理が必要です。

Pythonを1日2時間学ぶだけで十分ですか?それはあなたの目標と学習方法に依存します。 1)明確な学習計画を策定し、2)適切な学習リソースと方法を選択します。3)実践的な実践とレビューとレビューと統合を練習および統合し、統合すると、この期間中にPythonの基本的な知識と高度な機能を徐々に習得できます。

Pythonは開発効率でCよりも優れていますが、Cは実行パフォーマンスが高くなっています。 1。Pythonの簡潔な構文とリッチライブラリは、開発効率を向上させます。 2.Cのコンピレーションタイプの特性とハードウェア制御により、実行パフォーマンスが向上します。選択を行うときは、プロジェクトのニーズに基づいて開発速度と実行効率を比較検討する必要があります。

PythonとCにはそれぞれ独自の利点があり、選択はプロジェクトの要件に基づいている必要があります。 1)Pythonは、簡潔な構文と動的タイピングのため、迅速な開発とデータ処理に適しています。 2)Cは、静的なタイピングと手動メモリ管理により、高性能およびシステムプログラミングに適しています。

PythonListSarePartOfThestAndardarenot.liestareBuilting-in、versatile、forStoringCollectionsのpythonlistarepart。

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。

科学コンピューティングにおけるPythonのアプリケーションには、データ分析、機械学習、数値シミュレーション、視覚化が含まれます。 1.numpyは、効率的な多次元配列と数学的関数を提供します。 2。ScipyはNumpy機能を拡張し、最適化と線形代数ツールを提供します。 3. Pandasは、データ処理と分析に使用されます。 4.matplotlibは、さまざまなグラフと視覚的な結果を生成するために使用されます。

Web開発におけるPythonの主要なアプリケーションには、DjangoおよびFlaskフレームワークの使用、API開発、データ分析と視覚化、機械学習とAI、およびパフォーマンスの最適化が含まれます。 1。DjangoandFlask Framework:Djangoは、複雑な用途の迅速な発展に適しており、Flaskは小規模または高度にカスタマイズされたプロジェクトに適しています。 2。API開発:フラスコまたはdjangorestFrameworkを使用して、Restfulapiを構築します。 3。データ分析と視覚化:Pythonを使用してデータを処理し、Webインターフェイスを介して表示します。 4。機械学習とAI:Pythonは、インテリジェントWebアプリケーションを構築するために使用されます。 5。パフォーマンスの最適化:非同期プログラミング、キャッシュ、コードを通じて最適化
