続 photoshopのスウォッチ(.aco)を色相で並び替えるようにしたい

20091227|とりあえずのが出来たのでアップしまんた。
暫定版 photoshopのスウォッチ(.aco)を色相で並び替えるようにした
————————-

photoshopのスウォッチ(.aco)を色相で並び替えるようにしたいの続き。

まだまだ完成しないけど現状のメモ

[text]出力結果:
2
Array ( [0] => Array ( [0] => 50 [1] => 8b [2] => 94 ) [1] => Array ( [0] => 94 [1] => 50 [2] => 66 ) )
[/text]

まず.acoの開き方を調べた

.acoはバイナリなのでfopenにbで開く
そのままだと化けてたので
$acoのバイナリデータをbin2hexで16進数に

[text]
$acot出力結果:
0001 0002 0000 5050 8b8b 9493 0000 0000 9493 5050 6666 0000 0002 0002 0000 5050 8b8b 9493 0000 0000 0008 30b9 30a6 30a9 30c3 30c1 0020 0031 0000 0000 9493 5050 6666 0000 0000 0008 30b9 30a6 30a9 30c3 30c1 0020 0032 0000
[/text]

色の開始位置が先頭から12
1セット0000 RRRR GGGG BBBB 0000の20
必要な分が12

.acoに何色登録されてるか抜き出す

hexdec:16進数を10進数で返す

色を抜き出す

ここをどうしたらいいんだろうかわからん。
0000~0000の中身だけを取得する方法はないもんかな。

1セット(20)×色数分シフトさせてく。

RRRRGGGGBBBBを抜き出して
$array[0]=RRRR
$array[1]=GGGG
$array[2]=BBBB
みたいになるよう配列に入れて
さらにRR GG BBになるよう2次元配列にいれた。
入れ方がこれで正しいのか…

substr:文字列の一部分を範囲指定して返す
str_split:文字列を配列に変換

print_r:変数の情報を吐き出す
var_dump:print_rより吐き出す情報が多い
fclose:ファイル閉じる

さて、この後はどうしたらいいんでしょう。
完成するといいな。

追記

色相で並び替えるから
RGBをHSBに変換して、Hでソートすればいいんですよね?
RGBからHSBのHと出すにはr,g,bを比較しなきゃダメで
ソートした後に移動させたら0000で包み込んで書き出す?
最初にbin2hexしたから逆のことしなきゃダメなんかな?

2箇所にあるRGBの表記はどうやってまとめたらいいのかな


コメントを残す

メールアドレスが公開されることはありません。

You can add images to your comment by clicking here.