【发布时间】:2021-01-19 12:08:25
【问题描述】:
【问题讨论】:
标签: repeat photoshop tile tessellation
【问题讨论】:
标签: repeat photoshop tile tessellation
平铺背后的原理是tessellation。
在您的示例中,沿其局部 x 轴(或如我们所见,沿对角线向下和向右)复制并移动瓦片一定量,然后再次沿 y 轴(向下和向左)移动
加载图像,它会重复瓷砖 12 次。然后,您应该能够根据您对其他图像的需要调整脚本。
// Switch off any dialog boxes
displayDialogs = DialogModes.ERROR; // OFF
var originalUnits = app.preferences.rulerUnits;
app.preferences.rulerUnits = Units.PIXELS;
var duplicatLayerName = "tile";
var offsetX1 = 215; // pixels
var offsetY1 = 111; // pixels
var offsetX2 = -103; // pixels
var offsetY2 = 178; // pixels
var numTilesX = 3;
var numTilesY = 4
// tile them along the x axis
for (var i = 0; i < numTilesX; i++)
{
duplicate_layer(duplicatLayerName);
transform(offsetX1, offsetY1, 0);
// merge down as we go
app.activeDocument.activeLayer.merge();
}
// now do the same for the y axis
for (var i = 0; i < numTilesY; i++)
{
duplicate_layer(duplicatLayerName);
transform(offsetX2, offsetY2, 0);
// merge down as we go
app.activeDocument.activeLayer.merge();
}
// Set measuring units back to how they were
app.preferences.rulerUnits = originalUnits;
// Set Display Dialogs back to normal
displayDialogs = DialogModes.ALL; // NORMAL
function transform(dX, dY, angle)
{
if (angle == undefined ) angle = 0;
//transform
// =======================================================
var id769 = charIDToTypeID( "Trnf" );
var desc98 = new ActionDescriptor();
var id770 = charIDToTypeID( "null" );
var ref59 = new ActionReference();
var id771 = charIDToTypeID( "Lyr " );
var id772 = charIDToTypeID( "Ordn" );
var id773 = charIDToTypeID( "Trgt" );
ref59.putEnumerated( id771, id772, id773 );
desc98.putReference( id770, ref59 );
var id774 = charIDToTypeID( "FTcs" );
var id775 = charIDToTypeID( "QCSt" );
var id776 = charIDToTypeID( "Qcsa" );
desc98.putEnumerated( id774, id775, id776 );
var id777 = charIDToTypeID( "Ofst" );
var desc99 = new ActionDescriptor();
var id778 = charIDToTypeID( "Hrzn" );
var id779 = charIDToTypeID( "#Pxl" );
desc99.putUnitDouble( id778, id779, dX );
var id780 = charIDToTypeID( "Vrtc" );
var id781 = charIDToTypeID( "#Pxl" );
desc99.putUnitDouble( id780, id781, dY );
var id782 = charIDToTypeID( "Ofst" );
desc98.putObject( id777, id782, desc99 );
var id783 = charIDToTypeID( "Angl" );
var id784 = charIDToTypeID( "#Ang" );
desc98.putUnitDouble( id783, id784, angle );
executeAction( id769, desc98, DialogModes.NO );
}
// function DUPLICATE LAYER (str)
// --------------------------------------------------------
function duplicate_layer(str)
{
// duplicate layer
// =======================================================
var id1572 = charIDToTypeID( "Dplc" );
var desc350 = new ActionDescriptor();
var id1573 = charIDToTypeID( "null" );
var ref184 = new ActionReference();
var id1574 = charIDToTypeID( "Lyr " );
var id1575 = charIDToTypeID( "Ordn" );
var id1576 = charIDToTypeID( "Trgt" );
ref184.putEnumerated( id1574, id1575, id1576 );
desc350.putReference( id1573, ref184 );
var id1577 = charIDToTypeID( "Nm " );
desc350.putString( id1577, str ); // layer name here
var id1578 = charIDToTypeID( "Vrsn" );
desc350.putInteger( id1578, 2 );
executeAction( id1572, desc350, DialogModes.NO );
}
【讨论】: