在 Photoshop 中的当前位置平铺图像

如何解决在 Photoshop 中的当前位置平铺图像

是否有一些方法(或脚本)可以在 Photoshop(或其他图像编辑软件)中创建重复的图像平铺?
需要保持图像位置和旋转。

来自图片 From

目标图像图块: To

解决方法

平铺背后的原理是tessellation

在您的示例中,沿其局部 x 轴(或如我们所见,对角向下和向右)复制和移动瓷砖一定量,然后再次为 y 轴(向下和向左)

加载图像,它将重复拼贴 12 次。然后,您应该能够根据其他图像的需要调整脚本。

enter image description here

// 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 );
}

结果将是这样的,可以裁剪。 enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?