2016-12-04 1 views
0

Adobe 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 및 울음을 먹을 것 같아요.]

해결 방법이 있습니다. 그것의 장점 (및 그것의 workaround 성격의 일부)은 그것이 모든 애플 리케이션에서 작동한다는 것입니다. 단점은 파이썬 (어쨌든 Mac에 있어야 함 - 설치하지 않으면 설치하기 쉽다)과 두 번째 타사 소프트웨어 (모두 무료), "checkModifierKeys"및 "cliclick"이 필요하다는 것입니다. 몇 년 동안 내 스크립트 메뉴에 나타나는 스크립트를 사용하고 있습니다. 파이썬 부분은 여기에 설명되어 있습니다 : http://thechrisgreen.blogspot.com/2013/04/python-script-for-getting-pixel-color.html 이 스크립트는 AS do shell script 명령을 사용하여 저장되고 실행 가능하며 호출 될 수 있습니다. 그리고 그 나머지 부분은 화면상의 한 지점을 선택하고 컨트롤 키가 눌려지기를 기다리는 것입니다 (그것이 저의 작동 방식입니다). (컨트롤 키를 누를 때까지 대기) 기본 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와 같은 벡터 편집기에서 색상이 벡터 항목 (경로)에 적용되어 픽셀을 분리하지 않기 때문에이 솔루션이 작동하지 않습니다. 당신이 illistrator에서 픽셀 이미지로 작업하더라도 픽셀 색상을 얻기위한 스크립트 기능이 없습니다.

+0

해결 방법이 있습니까? – bearacuda13

+1

가능한 대안은 Photoshop에서 벡터 파일을 직접 열 수 있습니다. – emax

관련 문제