1

以下は、rgb を 16 進数の色に変換する関数です。しかし、それは完全に正しいわけではありません。(0, 255, 0) (#00ff00) で。ff00 を返すため、有効な色ではありません。正しい 16 進値を返すように変更するには助けが必要です。

function rgbToHex(r, g, b) {
        var rgb = b | (g << 8) | (r << 16);
        return rgb.toString(16);
    }
4

7 に答える 7

8

これはどう:

//...
return (0x1000000 | rgb).toString(16).substring(1);
于 2012-07-27T08:21:01.940 に答える
3

これを試して:

return ("000000"+rgb.toString(16)).slice(-6);
//                                   ^----returns last 6 chars
于 2012-07-27T08:24:35.407 に答える
1
return ((b | g << 8 | r << 16) / 16777216).toString(16).substring(2);

また

return ((b | g << 8 | r << 16) / 0x1000000).toString(16).substring(2);
于 2012-07-27T08:26:21.410 に答える
0

免責事項: 私は、下記の pusher.color ライブラリの作成者です。

ライブラリを使用してもかまわない場合は、pusher.colorxcolorなどのライブラリを試してみてください。Javascript での色操作について、Stackoverflow でいくつか質問されたことに気づきました。これにより、ライブラリを使用して問題を解決するための全体的な時間を節約できるかもしれません。必要なものの pusher.color 構文は次のようになります。

var hexString = pusher.color('rgb', r, g, b).hex6();
于 2012-08-04T16:39:40.900 に答える
-2

これはどう:

return $.sprintf("#%02x%02x%02x", r, g, b);

このためには、jQuery を使用する必要があります。

于 2012-07-27T08:29:00.190 に答える