alguien me ayuda con un script de javascript para Photoshop
(1/1)
Pedro122h:
Hola estoy buscando a alguien con experiencia en script para Photoshop.
El problema que tengo es que la función resize() me está dando problemas porque la capa/layer se redimensiona basada en porcentaje y yo necesito que se redimensione en píxeles.
Código
[// Abrir el documento existente
var existingDoc = app.activeDocument;
// Ruta al directorio que contiene las imágenes JPG
var imagePath = "~/Downloads/photopea/";
// Obtener la lista de archivos en orden alfanumérico
var fileList = Folder(imagePath).getFiles("*.jpg");
fileList.sort();
// Tamaño deseado de las imágenes
var targetWidth = 256;
var targetHeight = 82;
// Inicializar las posiciones
var currentX = 0;
var currentY = 1968;
// Iterar sobre cada archivo
for (var i = 0; i < fileList.length; i++) {
// importar imagen
alert(fileList[i]);
placeFile(fileList[i]);
// redimensionar imagen
app.activeDocument.activeLayer.resize(targetWidth,targetHeight);
//mover la capa a la posicion adecuada
app.activeDocument.activeLayer.translate(currentX,currentY);
// Actualizar las posiciones para la siguiente iteración
currentX += targetWidth;
// Verificar si se ha alcanzado el final de la fila
if (currentX > 1792) {
currentX = 0;
currentY -= targetHeight;
}
}
function placeFile(placeFile) {
var desc21 = new ActionDescriptor();
desc21.putPath( charIDToTypeID('null'), new File(placeFile) );
desc21.putEnumerated( charIDToTypeID('FTcs'), charIDToTypeID('QCSt'), charIDToTypeID('Qcsa') );
var desc22 = new ActionDescriptor();
desc22.putUnitDouble( charIDToTypeID('Hrzn'), charIDToTypeID('#Pxl'), 0.000000 );
desc22.putUnitDouble( charIDToTypeID('Vrtc'), charIDToTypeID('#Pxl'), 0.000000 );
desc21.putObject( charIDToTypeID('Ofst'), charIDToTypeID('Ofst'), desc22 );
executeAction( charIDToTypeID('Plc '), desc21, DialogModes.NO );
}
Danielㅤ:
Hola, yo creo que mejor sería que usaras CSS en vez de javascript y lograrías lo que necesites hacer.
Saludos
Pedro122h:
Como se hace con css ?
Danielㅤ:
Cita de: Pedro122h en 6 Marzo 2024, 19:02 pm
Como se hace con css ?
https://www.dongee.com/tutoriales/como-redimensionar-una-imagen-con-css-guia-paso-a-paso/
https://es.stackoverflow.com/questions/96065/redimensionar-imagen-en-css3
https://www.freecodecamp.org/espanol/news/tutorial-de-imagenes-responsivas-en-css-como-hacer-que-las-imagenes-sean-responsivas-con-css/
https://www.delftstack.com/es/howto/css/resize-image-css/
EdePC:
Pues si, el método resize utiliza un valor porcentual del propio Layer, entonces te queda convertir tus medidas en pixeles a porcentajes, para esto puedes usar la propiedad bounds que te entrega un Array con las coordenadas de la Layer, y no olvidar cambiar la Regla a Pixeles para poder trabajar en dicha medida (Units.PIXELS) antes que nada:
Código
// redimensionar imagen
app.preferences.rulerUnits = Units.PIXELS;
var b = app.activeDocument.activeLayer.bounds;
var w = targetWidth * 100 / (b[2] - b[0]);
var h = targetHeight * 100 / (b[3] - b[1]);
app.activeDocument.activeLayer.resize(w, h);
El ancho al 100% lo obtienes con (b[2] - b[0]) que es lo mismo que restar las coordenadas x2 - x1, y el alto al 100% lo obtienes restando las coordenadas y2 - y1
x1, y1
*----------------------------+
| |
| |
| |
| |
| |
+----------------------------*
x2, y2
.bounds = [x1, y1, x2, y2]
^ ^ ^ ^
b[0] b[1] b[2] b[3]
Una vez obtenidos el ancho y alto al 100% solo queda aplicar una ecuación de equivalencia, por ejemplo para el ancho (width):
w targetWidth
--- = -----------
100 x
despejando:
x = targetWidth * 100
-----------------
w
Lo mismo para la altura
Navegación