photoshop

Photoshopのガイドを計算無しにカンバスサイズの半分に引く。

いつもガイドを使う時は、ルーラー(定規?)の所からドラッグで出現させていました。
その方法だとカンバスの中心にガイドを置きたい時にはちょっとした計算をしなきゃダメなんですけど、単純な割り算なのにパッと答えられない時があったりして自分が不甲斐なく悲しくなる事もありました。

そうゆうのは精神衛生上良くないです。

でもって簡単に50%の位置にガイドを引く方法
[ビュー] – [新規ガイド] – 位置に[50%]

最近だと「ビュー」ではなく「表示」
[表示] – [新規ガイド] – 位置に[50%]

ビューからガイド引いた事なかったから気付かなかった。

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

とりあえずだけどやっと出来た、やっとだ。
スウォッチ(.aco)を色相か彩度か明度で並び替えるテスト

当初、色相の昇順だけを考えていたけど、どうせなのでHSBの昇順/降順6種類から選べるようにしてみた。

1.スウォッチを書き出す


プリセットマネージャーからも書き出せるかもしれないけどやったことない。

2.ソートの方法を選んで変換する


1.で保存したスウォッチを選択して
ソートの基準を色相、彩度、明度から選んで「変換」

3.ダウンロード


登録されている色数とRGBなんかと、ソート前の並び順とソート後の並び順を表示。

ソート済みファイルのダウンロード / 色数colors-西暦月日_時分秒.acoから保存先を選んでダウンロード、名前は変更しても問題なし。

こんな感じで使います。

追記|2010-01-12
不具合修正、ついでに重複した色を削除するようにしてみた
array_uniqueがローカルだと正常動作してるっぽいのに、サーバーにアップすると配列の先頭1つを残して全て削除してしまう、なにゆえ!?

追記2|2010-01-12
array_uniqueの第2引数にSORT_REGULARを設定したところローカルでもサーバー上でも同じ動作になった。
さくらインターネットのarray_uniqueの設定はSORT_STRINGがデフォルトにでもなっているのでしょうか?
ようわからん。

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

この記事は最新版があります。

ローカルではacoをソート出来るようになったんですが、アップロードすると動かない。
どうも.acoファイルの読み込みが失敗してるみたい。

色相で並び替えたらこんな感じ。

色相でソートしても明度がめだつなぁ
綺麗なグラデーションになるかと思ってたけど、HSBをうまいこと混ぜてソートしないとダメみたいだがようわからん。

とりあえず、次はファイルのアップロードと変換後のダウンロード出来るようにしなきゃ。

headerつけて、readfileを使うのか?

続きを読む

パスがシェイプで、シェイプがパスで。

※2015-10-10現在も有効

他のやり方もあると思いますが

パスをシェイプにしたいなーって時

シェイプにしたいパスを選択して、[レイヤー] – [新規塗りつぶしレイヤー] – [ベタ塗り]

シェイプをパスにしたいなーって時

新規パスを作成ってところにドラッグ

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

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

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

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

[php]
$fileName="945066.aco";
$aco=fopen($fileName,"rb");
$acoStr=fread($aco,filesize($fileName));
$acoStr=bin2hex($acoStr);

//基本
$setBlock=20;//色一区切り
$setHead=12;//頭出し分
$cutNum=12;//切り取る分
//色数
$colorMax=substr($acoStr,4,4);
echo hexdec($colorMax)."<br>";

//
for($ii=0;$ii<hexdec($colorMax);$ii++){
$nowBlock=($setBlock*$ii)+$setHead;
//
$colorName4[$ii]=substr($acoStr,$nowBlock,$cutNum);
$colorName4[$ii]=str_split($colorName4[$ii],4);
for($i=0;$i<3;$i++){
$colorName2[$ii][$i]=substr($colorName4[$ii][$i],0,2);
}
}

print_r($colorName2);
fclose($aco);
[/php]
[text]出力結果:
2
Array ( [0] => Array ( [0] => 50 [1] => 8b [2] => 94 ) [1] => Array ( [0] => 94 [1] => 50 [2] => 66 ) )
[/text]

続きを読む

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

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

何をどうしたらそんな事が出来るようになるのかわからんので、やってる事がずれてるかもしれんけどもメモ。

.acoの中身を見たい、
バイナリエディタで見るしかないようだ。
Stirlingを使ってみる。

16進数?なにそれ、まいったな。

適当なスウォッチを何個か作って.acoで書き出して、見比べてみて判ったこと

#508b94 を2個登録したスウォッチをバイナリエディタで開くと以下の通り
[text]
00 01 00 02 00 00 50 50 8B 8B 94 93 00 00 00 00
50 50 8B 8B 94 93 00 00 00 02 00 02 00 00 50 50
8B 8B 94 93 00 00 00 00 00 08 30 B9 30 A6 30 A9
30 C3 30 C1 00 20 00 31 00 00 00 00 50 50 8B 8B
94 93 00 00 00 00 00 08 30 B9 30 A6 30 A9 30 C3
30 C1 00 20 00 32 00 00
[/text]

2色目を#945066に変更したスウォッチは以下
[text]
00 01 00 02 00 00 50 50 8B 8B 94 93 00 00 00 00
94 93 50 50 66 66 00 00 00 02 00 02 00 00 50 50
8B 8B 94 93 00 00 00 00 00 08 30 B9 30 A6 30 A9
30 C3 30 C1 00 20 00 31 00 00 00 00 94 93 50 50
66 66 00 00 00 00 00 08 30 B9 30 A6 30 A9 30 C3
30 C1 00 20 00 32 00 00
[/text]

最初の00 01と最後の00 00は定型ぽい
次の00 02が登録されてる色の数、
3つ登録してあるスウォッチは00 03で、58個登録されてるスウォッチは00 3Aだった。
(2進数、8進数、10進数、16進数相互変換で変換させてもらってます。)

次の00 00がよく分からないけど区切り?
その後の50 50 8B 8B 94 93がhex値、前半2桁だけが有効?で00 00で閉じる?

[text]00 08 30 B9 30 A6 30 A9 30 C3 30 C1 00 20 00[/text]も区切りかな

hex値ぽいところを以下のようにガーっと00にしてもちゃんと読み込む
[text]
00 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 02 00 02 00 00 50 50
8B 8B 94 93 00 00 00 00 00 08 30 B9 30 A6 30 A9
30 C3 30 C1 00 20 00 31 00 00 00 00 94 93 50 50
66 66 00 00 00 00 00 08 30 B9 30 A6 30 A9 30 C3
30 C1 00 20 00 32 00 00
[/text]
02 00 02 00からが本当の色設定?

phpのテスト

[html]
<!– rgb.html –>
<form id="form1" name="form1" method="post" action="rgb.php">
<ul><li><label for="rr">r</label>:<input type="text" name="rr" id="rr" max="3" /></li>
<li><label for="gg">g</label>:<input type="text" name="gg" id="gg" max="3" /></li>
<li><label for="bb">b</label>:<input type="text" name="bb" id="bb" max="3" /></li></ul>
<input type="submit" />
</form>
[/html]
[php]
// rgb.php
$r=hexdec($_POST["rr"]);
$g=hexdec($_POST["gg"]);
$b=hexdec($_POST["bb"]);
//
$max=max($r,$g,$b);
$min=min($r,$g,$b);
print "max:".$max."<Br>";
print "min:".$min."<Br>";
print $_POST["rr"]."<Br>";
print $_POST["gg"]."<Br>";
print $_POST["bb"]."<Br>";

if($max==$min){
$hue=0;
}
else if($g==$max) {
$hue=($b-$r)/($max-$min)*60+120;
}
else if($b==$max) {
$hue=($r-$g)/($max-$min)*60+240;
}
else if($g<$b){
$hue=($g-$b)/($max-$min)*60+360;
}
else{
$hue=($g-$b)/($max-$min)*60;
}
print "hue値".$hue;
[/php]

でhexからhueを取り出せた。

あと必要な事

.acoの色の格納のされ方と範囲指定しての取り出し方
phpでバイナリを読む方法
とか?
方向はあってるんのでしょうか…

とりあえずphpで読み込んでみた

辞書を引きながら、こんな感じに。
[php]$fname="945066.aco";
$aco=fopen($fname,"rb");
$str=fread($aco,filesize($fname));
$str=bin2hex($str);
echo $str;

$aco_ar=explode(‘0000’,$str);
print_r($aco_ar);

fclose($aco);
[/php]
出力結果
[text]
00010002000050508b8b949300000000949350506666000000020002000050508b8b949300000000000830b930a630a930c330c1002000310000000094935050666600000000000830b930a630a930c330c1002000320000Array
(
[0] => 00010002
[1] => 50508b8b9493
[2] =>
[3] => 949350506666
[4] => 00020002
[5] => 50508b8b9493
[6] =>
[7] => 000830b930a630a930c330c100200031
[8] =>
[9] => 949350506666
[10] =>
[11] => 000830b930a630a930c330c100200032
[12] =>
)
[/text]

メモ
explode(‘区切り文字’,文字列);
explode(‘0000’,$str);

0000で区切ったけど、これだと#000が登場した時に区切り文字になってしまう。

メモ2
どうゆう風にしてけばいいんだろ
最初の2バイトを飛ばして、次の2バイトに格納されてる色の数を取得
前半00 00 RR RR GG GG BB BB 00 00で1セット
RR RRなどそれぞれの後半2文字を飛ばす
000830b930a630a930c330c1002000の前に出てくるRRRR GGGG BBBBを書き換える