Como construir um conversor de tipo de imagem em seis linhas de Python

Uma das vantagens de ser um programador é a capacidade de construir ferramentas utilitárias para melhorar sua vida. Ao contrário de um não programador, você provavelmente não gasta horas vasculhando várias páginas de resultados de pesquisa do Google para encontrar uma ferramenta que, em primeiro lugar, deveria melhorar sua produtividade (a ironia vence ). Isso provavelmente faz você se sentir mais poderoso conhecendo uma linguagem de programação - especialmente se essa linguagem de programação for tão versátil e incrível quanto o Python.

Um dos pontos do The Zen of Python diz:

Simples é melhor que complexo.

Com essa filosofia em vigor, muito do desenvolvimento de ferramentas de nicho usando Python pode ser feito de forma tão sucinta que me faz pensar se vale a pena chamá-la de ferramenta. Às vezes, a palavra scriptseria mais precisa. De qualquer forma, estamos nos preparando aqui para construir um scriptque converta imagens de um formato de arquivo (tipo de imagem) para outro - em apenas 6 linhas de código Python.

Isenção de responsabilidade: o número de linhas (6) exclui linhas vazias e comentários

Neste tutorial, vamos construir um conversor de tipo de imagem que converte uma imagem PNG em uma imagem JPG. Antes que suas células de massa cinzenta se precipitem para julgar se estou louco para construir essa ferramenta, deixe-me dizer que isso não é apenas para uma imagem - mas para todas as imagens dentro de uma pasta. Isso definitivamente exigiria mais esforço manual para fazer sem codificação (eu sei que você pode sentir o cheiro bash).

Pacote Python

Vamos usar o pacote Python PIL(que significa Python Image Library) para esse propósito. O original PILnão recebeu nenhuma atualização para a última versão do Python, então algumas boas almas criaram um fork amigável chamado Pillowque suporta até> Python 3.0.

Instale-o usando pip3 install Pillow.

Roteiro Inicial

Existem duas seções principais neste código. A primeira seção é onde importamos os pacotes necessários e a segunda seção é onde a operação real acontece. A operação real pode ser subdividida da seguinte forma:

  • Repita todos os arquivos com a extensão fornecida - no nosso caso .png- e repita o seguinte:
  • Abra o arquivo de imagem (como um arquivo de imagem)
  • Converta o arquivo de imagem para um formato diferente ( RGB)
  • Finalmente salve o arquivo - com a nova extensão .jpg

Linhas 1 e 2:

from PIL import Image # Python Image Library - Image Processing
import glob

Esta seção importa apenas os pacotes necessários. PILpara processamento de imagem e globpara iteração por meio de arquivos de uma determinada pasta no sistema operacional.

Linhas 3-6:

# based on SO Answer: //stackoverflow.com/a/43258974/5086335
for file in glob.glob("*.png"):
 im = Image.open(file)
 rgb_im = im.convert('RGB')
 rgb_im.save(file.replace("png", "jpg"), quality=95)

FIN

Então esse é o fim da nossa ferramenta! Você pode salvar essas 6 linhas como um .pyarquivo e, em seguida, chamá-las em seu computador, onde você tem imagens para converter.

Desenvolvimento adicional

Se você está planejando melhorar ainda mais este script, pode converter todo o script em uma ferramenta de interface de linha de comando - todos esses detalhes como File Formate Folder Pathpodem ser fornecidos como argumentos, estendendo ainda mais seu poder.

Referências

  • O código completo usado aqui está disponível no meu github
  • Zen de Python
  • Travesseiro