2

我经常有两组以相同方式命名的图片,我想编写检查差异的过程。我正在寻找基本检查,如果两个图像之间没有差异,则丢弃其中一个,如果存在单个像素差异,则保留两者。对于那些质疑在 Photoshop 中执行此操作是否明智的人,这是对另一个已经运行的脚本的补充,此可选检查将有助于减少我必须上传的文件数量。我将不胜感激。

4

1 回答 1

4

如果您真的必须在 Photoshop 中执行此操作,我建议您这样做:

var doc1 = app.open(new File("~/Desktop/test1.bmp"));
var doc2 = app.open(new File("~/Desktop/test2.bmp"));

doc2.selection.selectAll();
doc2.selection.copy();

app.activeDocument = doc1;
var newLayer = doc1.paste();
newLayer.blendMode = BlendMode.DIFFERENCE;

var histogram = doc1.histogram;
for (var i = 1; i < histogram.length; ++i) {
    if (histogram[i] > 0) {
        alert('Different!');
        break;
    }
}

我将第二张图片粘贴到第一张图片中,并将生成的图层的混合模式设置为差异。如果两张图片相同,则生成的图片应该是全黑的。因此,我检查除 0 之外的任何颜色值是否在直方图中有任何像素。

我假设这两个图像具有相同的大小。

于 2011-11-15T22:01:36.283 回答