¿Agregar automáticamente márgenes en blanco a las imágenes para obtener una relación de aspecto de 4x5?


0

Con frecuencia solicito impresiones en línea. Sin embargo, el servicio de impresión está automatizado y recorta las imágenes que subo a una proporción de 4x5. Me gustaría poder agregar márgenes (por ejemplo, blanco) a las imágenes ANTES de subirlas, para que tengan una relación de aspecto de 4x5.

Necesito hacer esto para varias imágenes, entonces, ¿hay un script / macro que pueda usar? Puede sugerir una solución basada en Photoshop.


¿Qué formatos de archivo de imagen están involucrados?
Martineau

Respuestas:


2

Photoshop puede ser guionado usando lo que llama Acciones. Se parecen mucho a las macros y se pueden grabar, editar y reproducir todo dentro del programa. Una vez que haya creado uno, puede ejecutarse manualmente en imágenes individuales o aplicarse a todas las imágenes en una carpeta.

Hay mucha información sobre ellos en la Ayuda de Photoshop. También hay una gran cantidad de programas gratuitos en la web para todo tipo de tareas, por lo que no me sorprendería si hubiera uno que haga lo que quiere ... o cercano. Si no, lo que le gustaría hacer parece bastante fácil, por lo que probablemente no sería tan difícil crear el suyo propio (suponiendo que sepa cómo hacerlo en el programa). Alternativamente, puede descargar uno gratuito cercano o similar a su objetivo y editarlo (modificarlo).

Actualización: Encontré este tutorial web sobre cómo crear sus propias acciones: cómo recortar 10 o más imágenes a un tamaño definido utilizando acciones y procesamiento por lotes en Adobe Photoshop .


Para ampliar esto un poco: dado que el resultado final es impresiones físicas, una opción es tomar todas las fotos de paisajes (también conocidas como horizontales), rotarlas 90 grados y luego guardarlas como una copia temporal. De esta manera, todas las fotos que envía al servicio están en una orientación. Si sus fotos no son 4x5 (u 8x10) para empezar, puede tomar todas las fotos y aplicar una transformación a todas para tenerlas a 5 pulgadas de ancho. Entonces el recorte automático no los recortará. Una vez que descubra su flujo de trabajo, las acciones se pueden automatizar como sugirió martineau.
horatio

1

Puede hacerlo utilizando una herramienta de línea de comandos que forma parte de ImageMagick . Está disponible para Unix / Linux, OS X y Windows.

Por ejemplo:

convert *.jpg -bordercolor white -border +10+10 %t-4x5.%e

Agrega un borde de 10 píxeles alrededor de la imagen. Para hacer relleno de relación de aspecto, las cosas tienen que ser un poco más complejas. Aquí hay una secuencia de comandos Bash que usa ImageMagick para hacer lo que quieras: aspecto .


0

Escribí un script en Matlab que resuelve el problema: lee todas las imágenes en el directorio y agrega un margen negro para lograr la relación de aspecto deseada.

% Margins

% SPECIFY RATIO
RATIO_HEIGHT = 10;
RATIO_WIDTH = 8;

% READ FILES
files = dir('*.jpg');

% START
clc
for f=1:size(files)
    % READ FILE
    IMG = imread(files(f).name);
    [h w d] = size(IMG);

    % CALCULATE RATIO
    ratio = w/h;

    % PRINT FILENAME
    fprintf('\n\n-------------------------------------');
    fprintf('\n# PROCESSING FILE: \t%s', files(f).name);

    % PRINT ORIENTATION
    if(h > w)
        orientation = 1;
        fprintf('\nPORTRAIT');
    else
        orientation = 2;
        fprintf('\nLANDSCAPE');
    end

    % PRINT DIMENSIONS
    fprintf('\t|\t%i x %i', h, w);

    % CHECK RATIO?
    if(h/w == RATIO_HEIGHT/RATIO_WIDTH)
        fprintf('\n > Correct aspect ratio.');
        NIMG = IMG;        
    else
        fprintf('\n! BAD aspect ratio : %f', h/w);

        % CALCULATE NEW DIMENSIONS
        if(ratio < RATIO_WIDTH/RATIO_HEIGHT)
            ch = h;
            cw = round(RATIO_WIDTH/RATIO_HEIGHT*ch);
        else
            cw = w;
            ch = round(RATIO_HEIGHT/RATIO_WIDTH*cw);
        end

        % PRINT NEW DIMENSIONS
        fprintf('\nNEW DIMENSIONS: \t%i x %i | ADDED: %i x %i', ch, cw, ch-h, cw-w);

        % CREATE NEW IMAGE
        NIMG = uint8(zeros(ch,cw,d));

        % COPY
        for k=1:d
            for i=1:h
                for j=1:w
                    NIMG(i,j,k) = IMG(i,j,k);
                end
            end
        end
    end

    % WRITE
    imwrite(NIMG, ['modified\' files(f).name '.png'], 'png');
end
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.