Redimensiona grande parte das imagens (qualquer idioma ou software) [fechado]

-1

Recentemente, decidimos reformular nosso antigo aplicativo que usava miniaturas de 150 x 150. Novos polegares são de tamanho 250x250.

Agora, o que preciso fazer é um processo único para substituir todos os 150 polegares antigos criados antes do novo design, com 250 novos.

A função usada para criar novas miniaturas foi imagecopyresampled do php. Eu gostaria de encontrar algo que me desse resultados semelhantes / iguais.

imagecopyresampled() copies a rectangular portion of one image to another image, smoothly interpolating pixel values so that, in particular, reducing the size of an image still retains a great deal of clarity.

Além disso, o trabalho em si é um pouco complicado, pois há algumas pastas / arquivos que devem ser excluídos durante a iteração dos arquivos.

Estrutura:

level 1: company folder
level 2: company property folder, company products folder
level 3: there are images that have to be resized inside company property folder.

Exemplo de estrutura:

company 1
company 2
company 3
----company 3 property
--------image1.jpg (original size)
--------image1_thumb.jpg (old 150 thumb)
--------image2.jpg
--------image2_thumb.jpg
----company 3 products (folder also includes images but they should not be resized)

Basicamente, os únicos arquivos com os quais trabalhamos são imagens de tamanho original (sem _thumb) dentro de pastas de propriedades. As antigas imagens em miniatura de 150px devem ser excluídas e / ou substituídas por novas imagens de 250px.

    
por Biker John 25.08.2013 / 12:34

2 respostas

1

Como FvD diz, o ImageMagick é muito bom para redimensionar imagens.

Para encontrar todos os arquivos relevantes e com convert processá-los, sugiro instalar findutils ou ainda melhor MSYS , porque o último não inclui apenas findutils, mas um monte de outras coisas (como uma concha adequada) também .

Se você tem o Python instalado, você pode escrever um programa simples que usa os.walk() para percorrer uma árvore do sistema de arquivos e usar subprocess.call() para convert do arquivo.

Um exemplo parcial;

import os
import subprocess

for root, dirs, files in os.walk('company 3\company 3 property'):
    images = [os.path.join(root, f) for f in files if f.endswith('.jpg') and not '_thumb' in f]
    for f in images:
        outbase = f[:-4] # simply remove '.jpg'
        out = outbase += '_thumb.jpg'
        args = ['convert', f, '-scale', '250x250', out]
        subprocess.call(args)

Editar : se você tiver um diretório que não deseja visitar, basta removê-lo do dicionário dirs . Veja a documentação para os.walk() .

    
por 25.08.2013 / 15:51
2

você pode configurar o percurso pelas pastas com qualquer coisa que desejar. A conversão é melhor feita com o ImageMagick que funciona da linha de comando ou incorporado em qualquer outra coisa.

A mágica especial que você está procurando está em converter .

    
por 25.08.2013 / 13:56

Tags