¿Hay alguna forma de automatizar el reemplazo de una imagen inteligente con un gráfico diferente?
Por ejemplo, si tengo una imagen maestra de una taza y una gran cantidad de imágenes/diseños rectangulares planos que me gustaría en la taza, después de algún procesamiento. Configuré una imagen inteligente usando uno de los diseños y la modifiqué con algunos filtros para que sea menos rectangular (ajustando la perspectiva, doblando la parte superior e inferior para que coincida con la curva de la taza, etc.).
Ahora necesito averiguar cómo usar Variables (si es posible) para reemplazar la imagen en el objeto inteligente para que se ejecuten las mismas transformaciones/filtros en cada imagen, que luego se colocará en la taza y se guardará.
Veo este tutorial que explica los conceptos básicos de los datos variables y muestra cómo usar imágenes como datos, pero no tengo claro cómo usar esto para actualizar el objeto inteligente para que todas las transformaciones se apliquen a las imágenes.
Si las variables no funcionan con objetos inteligentes, también estoy abierto a usar un script. (Me encantaría un fragmento sobre cómo actualizar un objeto inteligente a través de un script si alguien tiene uno, ya que nunca antes he usado scripts con Photoshop).
Encontré esta página que tiene una respuesta que se parecía mucho a lo que está buscando, la modifiqué para que funcione con la última versión y, con suerte, se ajuste mejor a sus necesidades.
.js
extensiónFile->Scripts->Browse
.js
archivo y ábrelo// Replace SmartObject’s Content and Save as PSD
// 2017, use it at your own risk
#target photoshop
if (app.documents.length > 0) {
var myDocument = app.activeDocument;
var theName = myDocument.name.match(/(.*)\.[^\.]+$/)[1];
var thePath = myDocument.path;
var theLayer = myDocument.activeLayer;
// PSD Options;
psdOpts = new PhotoshopSaveOptions();
psdOpts.embedColorProfile = true;
psdOpts.alphaChannels = true;
psdOpts.layers = true;
psdOpts.spotColors = true;
// Check if layer is SmartObject;
if (theLayer.kind != "LayerKind.SMARTOBJECT") {
alert("selected layer is not a smart object")
} else {
// Select Files;
if ($.os.search(/windows/i) != -1) {
var theFiles = File.openDialog("please select files", "*.psd;*.tif;*.jpg", true)
} else {
var theFiles = File.openDialog("please select files", getFiles, true)
};
if (theFiles) {
for (var m = 0; m < theFiles.length; m++) {
// Replace SmartObject
theLayer = replaceContents(theFiles[m], theLayer);
var theNewName = theFiles[m].name.match(/(.*)\.[^\.]+$/)[1];
// Save JPG
myDocument.saveAs((new File(thePath + "/" + theName + "_" + theNewName + ".psd")), psdOpts, true);
}
}
}
};
// Get PSDs, TIFs and JPGs from files
function getFiles(theFile) {
if (theFile.name.match(/\.(psd|tif|jpg)$/i) != null || theFile.constructor.name == "Folder") {
return true
};
};
// Replace SmartObject Contents
function replaceContents(newFile, theSO) {
app.activeDocument.activeLayer = theSO;
// =======================================================
var idplacedLayerReplaceContents = stringIDToTypeID("placedLayerReplaceContents");
var desc3 = new ActionDescriptor();
var idnull = charIDToTypeID("null");
desc3.putPath(idnull, new File(newFile));
var idPgNm = charIDToTypeID("PgNm");
desc3.putInteger(idPgNm, 1);
executeAction(idplacedLayerReplaceContents, desc3, DialogModes.NO);
return app.activeDocument.activeLayer
};
// Suspend History // Better for memory, doesnt clutter history when doing a lot automation MainFunctionNAME.main = function() { MainFunctionNAME(); } app.activeDocument.suspendHistory("HISTORY STATE NAME", 'MainFunctionNAME.main()');
abra la taza PSD, mantenga la capa de la taza debajo de la imagen que desea y puede importar todas las imágenes que desee en la taza y registrar acciones para los ajustes de perspectiva. Y reproduzca esas acciones en cada capa que contenga la imagen que desea en la taza. puede convertir todas las imágenes en objetos inteligentes ya sea usando acciones o simplemente haciéndolo manualmente, solo tomará dos clics. también puede asignar una tecla de función para la acción que grabó para que solo presione un botón y la salida se colocará en la carpeta que seleccionó mientras grababa la acción. esto debería convertirlo en un trabajo de presionar un botón si no se completa la automatización. pero eso es lo más cerca que puede estar sin tener que codificar. si aún busca una automatización completa, tendrá que escribir algo de código.
Si alguien puede perfilar un documento de prueba. Obtuve un trabajo de versión que abre el objeto inteligente y colocará una nueva capa, lo cerrará y luego guardará un nuevo archivo. Veo a muchas personas solicitando esta solicitud de plantillas de maquetas.
Modifiqué el código y codifiqué algo que funcionara. Sin embargo, necesito un archivo de prueba adecuado para ver si el script funciona bien y como se esperaba.
Espero que esto no obtenga ningún voto negativo menor, un poco cruel cómo responder aquí
joojaa
laryn
dnaskrent