😲 Marcos PROPORCIONALES (porcentuales) con PHOTOSHOP (script) 👌

In Photoshop by Carlos A. Oliveras12 Comments

Un problema clásico al añadir marcos a una imagen con Photoshop es que, si quieres crear una acción y poner marco a muchas fotos, no sirve un valor fijo: necesitamos un marco cuyo grosor sea proporcional al tamaño de la imagen. Es decir, que se calcule como un porcentaje de alguna de las dimensiones de esta.

Que yo sepa, la única forma de conseguirlo es mediante un script, y eso es lo que os traigo hoy. En el vídeo está explicado el asunto, y aquí os pongo el enlace de descarga:

👉 Descargar script 👈

No es más que un archivo zip que contiene el script – podéis renombrar la extensión como «.txt» si os resulta más fácil para editarlo, pero recordad dejadlo luego como .jsx en la versión final.

Por si alguien tiene curiosidad, os explico aquí cómo funciona la cosa (muy por encima):

//
// Añadir marco alrededor de la imagen como porcentaje
// El porcentaje se calculará sobre la dimensión más grande
//

Las líneas con doble barra son comentarios, anotaciones que podemos incluir. Photoshop las ignorará.

#target photoshop;

Indica al script que debe ejecutarse en Photoshop, pero aquí es un formalismo más que otra cosa ya que siempre lo abriremos desde Photoshop.

if(documents.length) app.activeDocument.suspendHistory(‘Añadir marco’, ‘main()’);

Nombre que tendrá la aplicación del script en el estado de historia, como un solo paso

function main(){

Inicio de la función principal del script

var startRulerUnits = preferences.rulerUnits;

Guarda en una variable en qué unidad estaban nuestras reglas. El motivo es que el script cambia esta unidad para forzar que la ampliación de lienzo se aplique como pixels – así, al final, podremos volver a dejar las unidades como estuvieran al principio. Se podría obviar si os da igual que os cambie las unidades, no es una parte fundamental de lo que queremos hacer.

app.preferences.rulerUnits = Units.PIXELS;

Cambia las unidades a píxeles, que es lo que aplicaremos al lienzo (una vez calculados cuántos píxeles corresponden al porcentaje deseado).

var doc = activeDocument;

Esto es para simplificar y escribir solo «doc» en vez de «activeDocument» dentro del script, es como definir una abreviación.

var porcentaje = prompt(«Introduce % marco (decimales con punto)», 5);

Aquí definimos qué porcentaje vamos a usar. Tal como está, se lo pregunta al usuario proponiendo 5 como valor por defecto, pero podemos borrar esa parte y poner el número deseado para que no pregunte cada vez. En el vídeo digo que no quitéis el punto y coma – realmente creo que no pasa nada, pero yo por si acaso siempre lo incluyo.

var marco = (Math.max(doc.height,doc.width)/100) * porcentaje;

Aquí ocurren dos cosas: por un lado, la función Math.max determina cuál de las dos dimensiones (alto/ancho) es la más grande, y una vez determinado esto, multiplica sus dimensiones en píxeles por el porcentaje previamente indicado, obteniendo así el valor en píxeles correcto para este documento en particular. Este valor quedará guardado en la variable «marco«.

// Color (solo si capa Fondo)
var colormarco = new SolidColor();
colormarco.rgb.hexValue = ‘000000’;
app.backgroundColor=colormarco;
//

Como explico en el vídeo, este es el color del marco si el documento consta de una capa fondo (si no, será transparente). Definimos el color deseado y lo asignamos como color de fondo.

doc.resizeCanvas((doc.width + (marco*2)), (doc.height + (marco*2)), AnchorPosition.MIDDLECENTER);

Por fin, el momento concomitante: redimensionar el lienzo. En este caso, se suma el valor de la variable «marco» multiplicado por dos tanto al ancho como al alto.

Por ejemplo, si tenemos un documento de 1000×500 y le pedimos un marco del 10%, primero determinará que 1000 es la dimensión más larga, luego calculará el 10% de 1000, que es 100, y entonces añadirá 100 por la izquierda, 100 por la derecha, 100 por arriba y 100 por abajo (por tanto, el doble de 100 horizontalmente y verticalmente).

preferences.rulerUnits = startRulerUnits;
}

Finalmente, se restituyen las unidades de las reglas al valor inicial, para dejarlo todo como estaba, y se cierra la función principal (la llave de cierre).


Que conste que esta explicación la hago con un afán divulgador, por intentar hacer esto más entendible, no porque yo sea un zorro de los scripts – ya digo en el vídeo que yo aquí hago experimentos más que otra cosa.

Por último, como digo al final del vídeo, os recuerdo que el script tendrá que estar siempre en el mismo lugar si grabáis una acción. Otra posibilidad es que lo coloquéis en esta ruta:

Win: C:\Program Files\Adobe\Adobe Photoshop 20XX\Presets\Scripts

Mac: /Applications/Adobe Photoshop 20XX/Presets/Scripts

Si lo ponéis ahí y luego iniciáis Photoshop (si estaba abierto, tendréis que cerrarlo), veréis que ahora el script aparece directamente en el menú Archivo>Secuencia de comandos. Por un lado, así lo tendremos más a mano en Photoshop, pero será un poco más latoso acceder cada vez a esa ruta si queremos modificarlo.

Y eso es todo. Como siempre, ojalá os haya sido útil. ¡Un saludo y mil gracias por vuestra atención!

Etiquetas: , , , , , ,

Comments

  1. Gracias de nuevo.
    Script muy util y facil de usar.
    Una preguntita… se podra hacer in script con profundidad , es decir 3D?
    Saludos y de nuevo gracias

    1. Author

      Hola Jonathan, ¿a qué te refieres con «script con profundidad»? Si te refieres a funciones 3D de Photoshop, ya no funcionan bien, están en proceso de eliminarlas, así que ni con acciones ni con scripts es recomendabla intentar hacer nada, porque seguro que falla. Si, en cambio, te refieres a un marco con alguna clase de efecto 3D, intenta explicarlo un poco mejor porque depende del tipo de efecto exacto en el que estés pensando.
      Saludos y gracias por comentar.

  2. Muchas gracias por este interesantísimo aporte, Carlos.
    Como siempre, clarísima y completa explicación, tanto aquí como en YouTube, de una herramienta que tantas veces he echado en falta.
    Se trata de algo que siempre he tenido que resolver de modo «artesano» y este script facilita muchísimo el asunto. Y más, como dices, si pensamos en «enmarcar» fotos por lotes.
    En mi caso particular, esta herramienta es un auténtico tesoro. Veo que muchas veces, de hecho diría que casi siempre, presentar una buena fotografía con un passepartout adecuado -tanto en color como en anchura- le da a esta foto toda la presencia que parece no apreciarse tanto sin ese enmarcado; de alguna manera ayuda a concentrarse aislando la foto de todo lo que le rodea y facilitando el acto de «perderse» en la imagen. Que no es poco.
    Otra vez GRACIAS. En serio. Y un saludo.

    1. Author

      Hola Jose Luis, mil gracias por tu comentario pues siempre me anima saber que lo que comparto es útil. En este caso, además, ya antes me habían preguntado por el tema otras personas, así que confiaba en que a alguien le sirviese, pues como dices, el tema de usar marcos es algo muy universal y que mucha gente aplica.
      De nuevo gracias y un saludo! 👍

  3. Hola Carlos, buenos días, cuando publicaste el video estuve haciendo pruebas y realmente es muy práctico este Script, te las di en video y te las doy aquí, pero yo quería llegar un poco más, y ver si se podía hacer alguna modificación, y la verdad que no he conseguido nada de lo que intento hacer, he intentado buscar más código para probar, y nada, te cuento un poco a ver si se puede cambiar el Script y conseguir que en lugar de hacer el marco exterior, se pueda hacer interior, pero en lugar de ser un color sólido, más bien sería una sombra, bueno yo diría que seria un marco doble, no sé si llamarlo así, porque lleva a parte de esta sombra otro marco más, a no ser que a partir de este marco se consiga la sombra.
    Bueno, como se suele decir, que una imagen vale mas que mil palabras, porque igual con lo que te he dicho no te aclare mucho, te pongo esta imagen del marco que he visto, para ver si se puede hacer algo así, aunque supongo que ira metida dentro de una Acción porque también lleva una pequeña imagen en la parte de arriba a la izquierda, porque no se si esto se puede hacer también desde el Script.

    https://i.im.ge/2023/10/26/tgIRWP.marco-interior.jpg

    Un saludo.

    1. Author

      Hola Socu, gracias por tu interés pero yo no tengo mucha soltura con los scripts y voy pilladísimo de tiempo – a un lego en el tema como yo le toma muchísimo tiempo averiguar cómo hacer algo así, si es que lo consigo.

      Yo te sugeriría que intentes hacerlo con ChatGPT. A lo mejor no acierta, pero yo a veces le he pedido que me haga scripts de Photoshop y al menos me ha ayudado a componer partes del script.

      Un saludo y gracias por comentar.

  4. Gracias, lo intentare, y mira que en alguna ocasión has comentado lo del ChatGPT, y ya ni me acordaba.

    Por cierto, no se si tiene que enviar notificaciones de nuevas respuestas, pero no he recibido ninguna de tu comentario, y dejo marcadas las dos opciones:
    – Recibir un correo electrónico con los siguientes comentarios a esta entrada.
    – Recibir un correo electrónico con cada nueva entrada.

    Un saludo.

  5. Author

    Hola Socu, si te digo la verdad, no estoy 100% seguro – yo creo que sí que debería enviar las notificaciones, pero esto lo gestionar WordPress y creo que ya está puesto que lo haga… así que gracias por avisar, pero no te sé decir gran cosa al respecto, siento el inconveniente. Un saludo.

Leave a Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.