2016-12-04 7 views
0

Adob​​e Illustrator 2015でJavaScriptを使用するためにExtendScriptを使用しています。下記のコードの座標からRGB値を取得する方法はありますか?私はかなりググとthisを見つけたRGBの座標を取得する:Adobe Illustrator

// gets rgb values 
double redValue = doc.getRGBColor(xPosition, yPosition).red; 
double greenValue = doc.getRGBColor(xPosition, yPosition).red; 
double blueValue = doc.getRGBColor(xPosition, yPosition).red; 

// declares a document 
var doc = app.activeDocument; 
// sets x and y coordinates to get color from 
var xPosition = 70.0; 
var yPosition = 64.0; 

これは仕事を必要とするものです。 しかし、それは2009年に投稿されたか、またはPhotoshopにあることが意図されていたために、機能しません。

その投稿の問題または翻訳に対する解決策が非常に高く評価されます。

答えて

2

[EDIT:ExtendScriptの質問に対するAppleScriptの回答を本質的に与えることについてお詫び申し上げます。私はちょうどASの質問を見ていて、別のセクションに行ったのを忘れてしまった。私はあなたがMacにいることを願っています。そうでない場合、私はちょうど私のdownvotesと泣きを食べるだろうと思う]

回避策があります。それの利点(およびその回避策の性質の一部)は、すべてのアプリケーションで機能するということです。欠点は、python(あなたのMacにインストールされていなければ簡単にインストールする必要があります)と2つのサードパーティ製ソフトウェア(どちらも無料)、 "checkModifierKeys"と "cliclick"が必要であるということです。私は何年もスクリプトメニューに表示されているスクリプトを使用してきました。 ここでは、pythonの部分について説明します。http://thechrisgreen.blogspot.com/2013/04/python-script-for-getting-pixel-color.html このスクリプトは、AS do shell scriptコマンドを使用して保存し、実行可能にして起動することができます。 とそれ以外の部分は、画面上のポイントを選択し、コントロールキーが押されるのを待つ(これが私の作品である)ことはとても簡単です。 (Controlキーが押されるまで待機する) 基本checkModifierKeys部がある:

set controlIsDown to false 
repeat until (controlIsDown) 
    set initialCheck to ((do shell script "/usr/local/bin/checkModifierKeys control")) 
    if initialCheck = "1" then set controlIsDown to true 
end repeat 

(座標取得)cliclick部がある:

set xyGrabbed to do shell script "/usr/local/bin/cliclick p" 

それに長い道のりのように見えるかもしれませんそれのために行くが、それは素晴らしい動作します。私のバージョンでは、このハンドラでrgbの値を16進数に変換しています。これは私の目的に役立ちます。

to makeHex(theNumber) --was anInteger 
    --Converts an unsigned integer to a two-digit hexadecimal value 
    set theResult to "" 
    repeat with theIndex from 1 to 0 by -1 
     set theBase to (16^theIndex) as integer 
     if theNumber is greater than or equal to theBase then 
      set theMultiplier to ((theNumber - (theNumber mod theBase))/theBase) as integer 
      set theResult to theResult & item theMultiplier of ¬ 
       {1, 2, 3, 4, 5, 6, 7, 8, 9, "A", "B", "C", "D", "E", "F"} 
      set theNumber to (theNumber - theBase * theMultiplier) 
     else 
      set theResult to (theResult & "0") 
     end if 
    end repeat 
theResult 
end makeHex 
+0

謝罪の必要はありません。他の人が同じ質問をしてMacで動くかもしれません。 – usr2564301

+0

あなたのソリューションをありがとう!私はマックが大好きで、決して別の種類のコンピュータを手に入れません:) – bearacuda13

+0

これはちょっと "プラットフォーム主義者"ですが、私はあなたを許してくれます:-) – CRGreen

1

Illustratorなどのベクターエディターでは、ベクターアイテム(パス)に色を適用してピクセルを分離しないため、このソリューションは機能しません。イリストレーターでピクセル画像を扱っても、ピクセルカラーを得るスクリプト関数はありません。

+0

回避策はありますか? – bearacuda13

+1

可能な回避策は、Photoshopで開いたベクターファイルです。 – emax

関連する問題