可以在JavaScript中读取图像的像素吗?

可以在JavaScript中读取图像的像素吗?,javascript,photoshop,Javascript,Photoshop,我有一堆上面有徽章的照片,接近1500张,我需要一种方法来检测上面是否有黄色徽章。是否可以每次从精确的像素坐标对样本进行操作或脚本着色,如果找到代表徽章的颜色,则将其发送到特定文件夹,以便将其与发现有徽章的其他JPEG分组。对此有什么想法或意见会有帮助吗?您可以在这里找到答案: 基本上是你 在画布元素中绘制图像 然后可以使用getImageData 方法返回包含 RGBA值 我知道这很古老,但由于它是在Photoshop中标记的(而且它肯定可以在Photoshop中使用JavaScript完成

我有一堆上面有徽章的照片,接近1500张,我需要一种方法来检测上面是否有黄色徽章。是否可以每次从精确的像素坐标对样本进行操作或脚本着色,如果找到代表徽章的颜色,则将其发送到特定文件夹,以便将其与发现有徽章的其他JPEG分组。对此有什么想法或意见会有帮助吗?

您可以在这里找到答案:

基本上是你

在画布元素中绘制图像 然后可以使用
getImageData
方法返回包含 RGBA值


我知道这很古老,但由于它是在Photoshop中标记的(而且它肯定可以在Photoshop中使用JavaScript完成),因此有一个解决方案:

#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);
    }
}
#目标photoshop
//测试功能
功能hasBadge(文件、x、y){
//删除所有当前颜色采样器,因为photoshop限制为4左右,并在坐标处创建一个新采样器
对于(变量i=0;i 200&&sampler.color.rgb.green>200&&sampler.color.rgb.blue<50){
返回true;
}
返回false;
}
//节目
var x=200;
变量y=200;
//处理整个文件夹。也可以使用File.openDlg()选择文件,但如果有大量文件,则按文件夹选择可能会更容易
var inputFolder=Folder.selectDialog(“选择要处理的文件夹”);
var fileList=inputFolder.getFiles(“*.JPG”)//使用您想要的扩展名或不使用扩展名来选择所有文件
//对于文件夹中的每个文件。。。

对于(var i=0;iYes,这是可能的。您对它的哪些特定部分有问题?我已经做了很多操作,但我不确定您在给样本上色时是否能够记录准确的坐标。您是在谈论特定的.psd层中的徽章,还是导出的图像(gif、jpg、png…)?为什么这个标签是Photoshop?恐怕这不能在Photoshop中完成。可能是或的副本,我可以提供帮助,并用此人所需信息的摘要回答问题。IDK,有时只是将一篇文章标记为副本感觉有点精英和势利;这对任何人都没有帮助(有点像投票否决1.5年前的帖子,然后发布你知道的更好的方式以及你将如何以不同的方式做事。这对任何人都没有帮助,让你成为一个工具)谢谢你的建议,但下次尽量让你的评论对你自己有用:)