PHP imagecolorallocateの色の指定


お世話になっています。

例(白色)
imagecolorallocate($dst_im, 0xFF, 0xFF, 0xFF);

白 = 0xFFで
白 = #ffffffではないのはなぜでしょう。

0xFF表記、色の一覧が見れるサイトなどあれば教えてください。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/11/15 13:20:06
  • 終了:2012/11/15 14:56:09

ベストアンサー

id:Cherenkov No.1

Cherenkov回答回数1502ベストアンサー獲得回数4922012/11/15 13:50:14

<?php
function imagecolorallocate2($img, $str) {
  $r = hexdec(substr($str, 1, 2));
  $g = hexdec(substr($str, 3, 2));
  $b = hexdec(substr($str, 5, 2));
  return imagecolorallocate($img, $r, $g, $b);
}
echo imagecolorallocate2($dst_im, '#00FF22');

こうするとか

id:Cherenkov

最初の回答は0xFFの文字列になっていたのでたぶん動かなかった。
hexdecを使って0~255の整数に変換するようにしました。

2012/11/15 14:16:40
id:oracle11011

出来ました。

一度変換するのですね。

勉強になりました。
有難う御座います。

2012/11/15 14:56:01
  • id:rouge_2008
    imagecolorallocate()は、16進数で指定しても正しく動作するはずです。

    http://php.net/manual/ja/function.imagecolorallocate.php

    問題の箇所のコード全体の記述はどうなっていたのでしょう?
    既に解決済みですが、参考までにimagecreate()、imagestring()、imagearc()等のサンプルコードを16進数に変更して試してみてはいかがでしょう。

    http://www.php.net/manual/ja/function.imagecreate.php
    http://www.php.net/manual/ja/function.imagestring.php
    http://www.php.net/manual/ja/function.imagearc.php
  • id:Cherenkov
    最初の回答はRGBの16進数を文字列で渡してしまっていた。
    imagecolorallocate($im, '0xFF', '0xFF', '0xFF');
    これでは動かないと気付き、文字列から以下のような16進数のリテラル(?)に変換する方法を探ったがわからず、
    imagecolorallocate($im, 0xFF, 0xFF, 0xFF);
    結局0~255の数値にする回答をしました。
  • id:rouge_2008
    通常の数値(10進数)では問題ないようなので、他の部分に問題があるのかと思うのですが、質問者さんからの返信がないと分からないですね。
    本来は変換しなくても動くはずなので、原因を特定した方がいいと思うのですが・・・
    シンプルなサンプルコードで動作を確認するといいのではないかと思ってコメントしました。

    $im = imagecreatetruecolor(100, 40);
    $col = imagecolorallocate($im, 255, 255, 255);
    $col2 = imagecolorallocate($im, 0xFF, 0xFF, 0xFF);

    var_dump($col);
    var_dump($col2);

    上記はどちらも「int(16777215)」と表示します。
    ※「16777215」(10進数) = 「FFFFFF」(16進数)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません