Adiciona automaticamente margens em branco às imagens para obter uma proporção de 4x5?

0

Eu freqüentemente solicito impressões on-line. No entanto, o serviço de impressão é automatizado e recorta as imagens que eu carrego para uma taxa de 4x5. Gostaria de poder adicionar margens (por exemplo, branco) às imagens ANTES DE as carregar, para que estejam no formato 4x5.

Eu preciso fazer isso para várias fotos, então existe um script / macro que eu possa usar? Você pode sugerir uma solução baseada no Photoshop.

    
por Bojack 28.01.2011 / 15:39

3 respostas

2

O Photoshop pode ser roteirizado usando o que chama de Ações. Eles são muito parecidos com macros e podem ser gravados, editados e reproduzidos no programa. Depois de criar um, ele pode ser executado manualmente em imagens individuais ou aplicado a todas as imagens de uma pasta.

Há muitas informações sobre eles na Ajuda do Photoshop. Há também um grande número de arquivos gratuitos na web para todos os tipos de tarefas, por isso não me surpreenderia se houvesse um que fizesse o que você quer ... ou próximo a ele. Se não, o que você gostaria de fazer parece bastante fácil, por isso, provavelmente não seria tão difícil criar o seu próprio (supondo que você sabe como fazê-lo no programa). Como alternativa, você pode fazer o download de um link gratuito próximo ou semelhante ao seu objetivo e editá-lo (modificá-lo).

Atualização: Encontrei este tutorial da web sobre como criar suas próprias ações - Como: Cortar 10 ou mais imagens em um tamanho definido usando ações e processamento em lote no Adobe Photoshop .

    
por 28.01.2011 / 16:34
1

Você pode fazer isso usando uma ferramenta de linha de comando que faz parte do ImageMagick . Está disponível para Unix / Linux, OS X e Windows.

Por exemplo:

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

Adiciona uma borda de 10 pixels ao redor da imagem. Para fazer o preenchimento da proporção, as coisas precisam ser um pouco mais complexas. Aqui está um script Bash que usa o ImageMagick para fazer o que você quer: aspectpad .

    
por 29.01.2011 / 03:48
0

Eu escrevi um script no Matlab que resolve o problema: Ele lê todas as imagens no diretório e adiciona uma margem preta para obter a proporção desejada.

% 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
    
por 13.02.2011 / 04:27