Illustratorスクリプト 09/12/08
取引先から送られてくるイラレのデータが、いっつもベクターベースの処理で、小数点以下を使用したデータで送られてくる。
これだと、ラスター化(例えばフォトショに持っていく)したときに、意図しないアンチなどがかかって気持ち悪いので作成。
選択したオブジェクトの、XY値&width,height値を小数点以下四捨五入する。width,heightに関しては任意で好きな値も入れられる。
しっかし、GUIが作りにくいなぁ。
//GUI作成 uDlg = new Window('dialog','位置、サイズ調整Tool',[400,400,620,550]); checkBtn1 = uDlg.add("checkbox", [5, 10, 200, 20], "X,Y値(auto)"); checkBtn2 = uDlg.add("checkbox", [5, 30, 200, 40], "width, height値"); checkBtn3 = uDlg.add("checkbox", [15, 45, 210, 55], "auto"); widthText = uDlg.add("statictext", [15, 62, 40, 80], "width"); widthFiled = uDlg.add("edittext", [45, 60, 100, 80], ""); heightText = uDlg.add("statictext", [110, 62, 135, 80], "height"); heightFiled = uDlg.add("edittext", [140, 60, 195, 80], ""); btn1 = uDlg.add("button",[20,110,100,130], "実行"); btn2 = uDlg.add("button",[120,110,200,130], "キャンセル"); //GUI初期化 checkBtn1.value = true; checkBtn2.value = false; checkBtn3.value = true; checkBtn3.enabled = false; widthText.enabled = false; widthFiled.enabled = false; heightText.enabled = false; heightFiled.enabled = false; //GUI設定変更実装 checkBtn2.onClick = function(){ if(checkBtn2.value){ if(checkBtn3.value){ checkBtn3.enabled = true; widthText.enabled = false; widthFiled.enabled = false; heightText.enabled = false; heightFiled.enabled = false; }else{ checkBtn3.enabled = true; widthText.enabled = true; widthFiled.enabled = true; heightText.enabled = true; heightFiled.enabled = true; } }else{ checkBtn3.enabled = false; widthText.enabled = false; widthFiled.enabled = false; heightText.enabled = false; heightFiled.enabled = false; } } checkBtn3.onClick = function(){ if(checkBtn3.value){ checkBtn3.enabled = true; widthText.enabled = false; widthFiled.enabled = false; heightText.enabled = false; heightFiled.enabled = false; }else{ checkBtn3.enabled = true; widthText.enabled = true; widthFiled.enabled = true; heightText.enabled = true; heightFiled.enabled = true; } } //実処理実装 btn1.onClick = function(){ selObjects = app.selection; if(checkBtn1.value){ //X, Y値処理 for(i = 0; i < selObjects.length; i++){ position = selObjects[i].position; x = Math.round(position[0]); y = Math.round(position[1]); selObjects[i].position = Array(x, y); } } if(checkBtn2.value){ //width, height値処理 if(checkBtn3.value){ //auto for(i = 0; i < selObjects.length; i++){ selObjects[i].width = Math.round(selObjects[i].width); selObjects[i].height = Math.round(selObjects[i].height); } }else{ //任意 for(i = 0; i < selObjects.length; i++){ selObjects[i].width = widthFiled.text; selObjects[i].height = heightFiled.text; } } } uDlg.close(); alert("完了"); } //キャンセル処理 btn2.onClick = function(){ uDlg.close(); } //表示 uDlg.show();
いまさら気づく、javascriptのワナ!!
なんとー!
これは、初心者の足元を見事にすくう罠!!!
おそろしやwebの世界、クロスブラウザなど例外に次ぐ例外の嵐。
まったくもって習得する気がうせる。。。
style sheetでは
#hoge { color: red; background-color: #555555; }
なのに、javascriptで記述の際は
function hoge(){ document.getElementById("hoge").style.backgroundColor = "#555555"; }
などど、間にハイフン(−)が入っているものは取り除いて次の単語の頭を大文字にしなきゃならん。
けしからん。
近況
ども、redtaxiです。
気がつけば、1ヶ月以上書き込みしてないorz
仕事のヤマが押し寄せてまして、、、って書くと終わったみたい
ですが、、、まだ押し寄せてます。
このまま7月末まで。トホホ
見ると、参考にさせていただいたサイトの方からトラックバック
いただいたりしています。ちなみにトラックバックの事、なんとなく
しか分かってないredtaxiです。
ありがとうございます。
久々に書き込んだのはワケがあり。
仕事でActionScriptの備忘録かかないと、忘れてしまいそうな
ことがいっぱい!!
removeMovieClipの仕様とか・・・???・・・とか?
す、すでに何書くか忘れてる。
なるべく早くまとめましょう>自分
8bitカラーのBMP画像のカラーパレット操作(python PIL)。
某お仕事で、今後必要になるであろう。
前回↓
photoshop:減色処理をバッチとjavascriptで実現。 - redtaxi d-side
の延長のお話。
今回は、8bitカラー(インデックスカラー)のbmp画像のカラーパレットを編集したいというお話。
特に、透過指定色に使われているある色をカラーパレット内にて移動(最初に持ってくる)する。
まず、pythonで画像いぢくるとなるとコイツ↓PIL
Python Imaging Library (PIL)
基本の使い方。
import Image import ImagePalette #まずは対象ファイルオープン img = Image.open("D:\work\xxx\xxx.bmp") #表示(必要ないけど・・・) img.show() #カラーパレット取得 palette = img.getpalette() #RGB値のリストで返ってきます。 #ここからこのリストの順番やRGB値をいぢって。。。 #戻す! img.putpalette(np) #このままだと、実際のデータのカラー指定がズレてるので、 #パレットの移動にあわせて、実データもずらす。 #まずは、データの取得。 data = list(img.getdata()) #リストで指定パレット番号が返る。 #指定パレット番号をいぢって戻す! img.putdata(data) #保存 img.save("D:\work\xxx\xxx.bmp")
このあたり↓が参考になりました。感謝。
PILでGBA with Python - 神様なんて信じない僕らのために