删除tileset中tile之间的间距

时间:2014-07-29 02:43:47

标签: photoshop tile

所以我有一个包含图块的图像,每个图块宽约16像素,高。但是在每个瓷砖之间用透明间隔物隔开。 像这样:

Have

但这很难看,并且让节目中的精灵显得很烦人,更不用说它浪费了宝贵的图像空间。有没有简单的(除了我手动使用Photoshop移动每个单独的瓷砖)的方式使它看起来像这样?

Want

我查看了Photoshop宏,以及其他程序,我似乎找不到任何可以直接执行此操作的程序。 谷歌还建议我去家里depo并获得瓷砖填缝剂。

1 个答案:

答案 0 :(得分:0)

试试这个代码段。如你所说,它假设瓷砖总是16像素。左上角位于正确的位置和单个像素间隙。该脚本假定文档将打开,并将包含您的图块的图层设置为活动图层。

#target photoshop
app.preferences.rulerUnits = Units.PIXELS;
app.preferences.typeUnits = TypeUnits.PIXELS;

var gap = 1;
var tileSize = 16;
var doc = app.activeDocument.duplicate();
var sourceLyr = doc.activeLayer;
var xTilePosition = 0;
var yTilePosition = 0;

for (var x = 0; x < sourceLyr.bounds[2]; x = x+ tileSize + 1 ) {

    for (var y = 0; y < sourceLyr.bounds[3]; y = y + tileSize + 1) {

        if (x > 0 || y > 0) {
            app.activeDocument = doc;
            doc.activeLayer = sourceLyr;
            selRegion = Array(Array(x, y),
                                    Array(x + tileSize, y),
                                    Array(x + tileSize, y + tileSize),
                                    Array(x, y + tileSize),
                                    Array(x, y))
            doc.selection.select(selRegion);

            var dx = x - (xTilePosition * tileSize);
            var dy = y - (yTilePosition * tileSize);

            doc.selection.translate(0 - dx, 0 - dy);
        }

        yTilePosition ++;
    }

    xTilePosition++;
    yTilePosition = 0;
}