2011-04-28 4 views
3

나는 그들 중 1500 개에 가까운 배지가 달린 사진들을 가지고 있는데, 노란색 배지가 있다면 그것을 탐지 할 방법이 필요하다. 매번 정확한 픽셀 좌표에서 샘플을 색칠하는 작업이나 스크립트를 만들 수 있으며, 배지를 나타내는 색상을 찾은 다음 특정 폴더로 보내면 발견 된 다른 jpeg와 그룹화됩니다 배지가 있어요. 이것에 대한 어떤 생각이나 의견이 도움이 될까요?JavaScript로 이미지의 픽셀을 읽을 수 있습니까?

당신은 여기에 답변을 찾을 수 있습니다
+5

예, 이것이 가능하다. 어떤 부분에서 문제가 있습니까? –

+0

음, 나는 많은 액션을 만들었지 만 샘플을 색칠 할 때 정확한 좌표를 기록 할 수 있는지 확실하지 않았습니다. – Lawrence

+0

특정 .psd 레이어의 배지 또는 내 보낸 이미지 (gif, jpg, png ...)에 대해 이야기하고 있습니까? –

답변

0

: 기본적으로 당신이

이 을 포함하는 배열을 반환 당신이 getImageData 방법을 사용할 수 있습니다 캔버스 요소 의 이미지를 그릴

How to use JavaScript or jQuery to read a pixel of an image when user clicks it?

을 RGBA 값.

+0

그냥 중복으로 표시 할 수 있습니다 ... – Bergi

+0

또는 도움이 될 수 있고 그 사람이 필요로하는 정보를 요약하여 질문에 대답 할 수 있습니다. IDK, 때로는 중복으로 게시물을 신고하는 것은 약간 엘리트 주의자와 snobby를 느낍니다. 그것은 단지 누군가를 돕지 않습니다. (친절한 1.5 세 게시물을 투표 한 다음 더 잘 알 수있는 방법과 다르게 수행 한 방법을 게시하는 것 같습니다. 어떤 사람에게 도움이되지 않고 도구로 나올 수 있습니다.) 감사합니다. 귀하의 제안,하지만 다음 번에 자신에게 귀하의 의견을 유지하여 도움이 될 :) –

2

나는이 오래 알고 있지만 그것은 포토샵에서 태그 됨 (그리고 확실히 자바 스크립트와 포토샵에서 할 수 있습니다) 때문에, 여기에 솔루션입니다 :

#target photoshop 

// TEST FUNCTION 

function hasBadge(doc, x, y) { 

    // remove all current color samplers because photoshop has a limit of 4 or so and create a new sampler at the coordinates 
    for (var i=0; i<doc.colorSamplers.length; i++) { 
     doc.colorSamplers[i].remove(); 
    } 
    var sampler = doc.colorSamplers.add([x, y]); 

    //This is where it could get tricky based on the actual color of the badge. If the badge is always consistently the same exact color you could test it's hexValue... 
    if (sampler.color.rgb.hexValue === "ffff00") { 
     return true; 
    } 

    // If the color is not consistent you can try to test if it's within a range of rgb values. This may take some tweaking... 
    if (sampler.color.rgb.red > 200 && sampler.color.rgb.green > 200 && sampler.color.rgb.blue < 50) { 
     return true; 
    } 

    return false; 
} 

// PROGRAM 

var x = 200; 
var y = 200; 

// Process an entire folder. Can also use File.openDlg() to select files but might be easier to select by folder if you have a ton of files 
var inputFolder = Folder.selectDialog("Select a folder to process"); 
var fileList = inputFolder.getFiles("*.JPG"); //Use whatever extension you want or no extension to select all files 

// For each file in the folder... 
for(var i=0; i<fileList.length; i++) { 

    var doc = open(fileList[i]); 

    if (hasBadge(doc, x, y) { 
     doc.saveAs(new File("C:/my/file/path/" + doc.name)); 
     doc.close(SaveOptions.DONOTSAVECHANGES); 
    } 
} 
관련 문제