alguien me ayuda con un script de javascript para Photoshop

Páginas: (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

Páginas: (1/1)