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

[0] Índice de Mensajes