勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPで指定したカラーコードの反対色を計算し、カラーコードとして出力する方法

  PHP

あるシステム内でユーザが指定したカラーコードをCSSで指定した上で出力するというケースがあった。例えば「#ff0000」という文字列を赤で表示するというもの。ただ、背景色は白だったため指定したカラーコードによっては見づらい場合があった。そのため反対色を自動で計算し、背景色に指定したい。以下に対応方法をメモ。

 

対応方法

ソースコード

<?php
var_dump(color_inverse('#ff0000')); //string(7) "#00ffff"
var_dump(color_inverse('#00ff00')); //string(7) "#ff00ff"
var_dump(color_inverse('#0000ff')); //string(7) "#ffff00"


function color_inverse($color){
    $color = str_replace('#', '', $color);
    if( strlen($color) != 6 ){
        return '000000';
    }
    $rgb = '';
    for( $x = 0; $x < 3; $x++ ){
        $c = 255 - hexdec(substr($color, (2 * $x), 2));
        $c = ($c < 0) ? 0 : dechex($c);
        $rgb .= (strlen($c) < 2) ? '0'.$c : $c;
    }
    return '#'.$rgb;
}

 

参考サイト

https://www.jonasjohn.de/snippets/php/color-inverse.htm

 - PHP

  関連記事

Composer自体のインストールとmonolog及びTwigをComposer経由でインストールする方法
Composer自体のインストールとmonolog及びTwigをComposer経由でインストールする方法

「Composerで○○をインストール」というのをよく見かけるがComposer ...

JavaScriptの「pako」ライブラリでGzip圧縮したデータをPHPで展開する方法
JavaScriptの「pako」ライブラリでGzip圧縮したデータをPHPで展開する方法

先日、JavaScriptの「pako」ライブラリで文字列やオブジェクト(連想配 ...

FLASHがインストールされているかどうかチェックする
FLASHがインストールされているかどうかチェックする

以前にここでちょっとやったけど、インストールされているか どうかだけならもっと良 ...

PHPにてhosts設定を行った上で他サイト・サーバにアクセスする方法
PHPにてhosts設定を行った上で他サイト・サーバにアクセスする方法

開発中の案件だとhosts設定を行ってサーバにアクセスする、ということがある。作 ...

PHPのログイン認証をPEAR::Authパッケージで実装する方法
PHPのログイン認証をPEAR::Authパッケージで実装する方法

PHPのシステムである程度ちゃんとしたログインシステムが必要になった。今までログ ...