Scribus: script para cortar imagens pelo tamanho do quadro

Corte de foto

Corte de foto: apenas as vaquinhas apareceriam, mas toda a foto seria incluída no arquivo PDF

Desenvolvi este script Python para cortar uma imagem conforme o tamanho do quadro, ajustar sua resolução em DPI, gravá-la e recarregá-la em formato TIFF, no programa de editoração Scribus.

O objetivo disto é deixar menor o arquivo PDF de saída, aumentar sua velocidade de processamento pela gráfica e diminuir a chance de erros “de saída” pelo RIP PostScript. Se isto não for feito, as fotos inteiras são incluídas no arquivo de saída, mesmo que uma pequena parte delas seja enquadrada (veja imagem das vaquinhas).

Por exemplo, a revista-laboratório do curso  de Jornalismo da UFSM em Frederico Westphalen usa uma página índice com dezenas de miniaturas das fotos usadas nas matérias. Esta página ficaria muito “pesada” para ser processada, pois só um detalhe das fotos é usado e, em tamanho pequeno, os DPI ficam muito altos desnecessariamente.

O script só deve ser usado quando toda a  diagramação estiver pronta. Cortar as imagens antes disto só dificultaria a diagramação, pois, durante este trabalho, as fotos normalmente são redimensionadas várias vezes para que se ajuste o texto ao espaço disponível (as imagens são os elementos “elásticos” da diagramação).

[Atualização]

Interface gráfica do cortador/conversor de fotos

Interface gráfica do cortador/conversor de fotos

Coloquei uma interface gráfica no script que facilita muito.

Ajustes

No início do script há variáveis que posso definir conforme o tipo de saída:

imageResolution = 200  # resolution for printing
fileType = '.tif' # force tiff format

A resolução normal de imagens para trabalhos impressos é de 200 dots per inch (DPI) para jornais e 300 DPI para revistas e trabalhos com mais qualidade. Coloco o  valor desejado em “imageResolution“. Também poderia escolher o formato de imagem “.jpg“, mas é desaconselhável, pois TIFF é o formato padrão para impressos e gera menos problemas de saída. Nunca se deve usar formato PNG ou GIF pois muitos RIPs PostScript não os aceitam. A imagem não sai no fotolito ou na chapa.

Instalação

Para instalar o script, coloquei-os nos diretórios default (/usr/share/scribus-ng/scripts no Ubuntu, c:\Arquivos de programas\Scribus 1.5.1\share\scripts\ no Windows). Assim, o script aparece no menu “Script > Scripts do Scribus“.

De outra forma, também pode-se ir ao menu “Script > Executar script…” e procurar o arquivo de script em qualquer lugar onde se tenha colocado-o. Depois de usado a primeira vez, ele fica em “Script > Scripts recentes…“.

Uso

Uso o script selecionando o quadro de imagem e escolhendo o script pelo menu. A conversão é feita em segundos. O arquivo gerado tem o mesmo nome do arquivo original, mais  o final “_cortado(1).tif“. O número é incrementado se o arquivo já existe, caso a mesma foto seja usada várias vezes na mesma publicação.

Usando a Python ImageLibrary (PIL)

Para a manipulação das imagens, usei a PIL. Tive dificuldades com nomes de arquivos acentuados, que geravam erros de “arquivo não encontrado”, embora o Scribus trabalhasse sem problemas com eles. Depois de muita pesquisa pela internet, estudo de manuais e tentativas e erros, descobri a solução do problema: usar “encode” nos nomes de arquivos passados à PIL:

# Pegar a codificação do sistema operacional
encoding = sys.getfilesystemencoding()
# Abrir imagem pelo PIL
import Image
imageFile = 'arquivo_com_acentuação.jpg'
img = Image.open(imageFile.encode(encoding)) # encode to let PIL handle accented filenames
# gravar imagem pelo PIL
imageResolution = 200
img.save(imageFile.encode(encoding),dpi=(imageResolution,imageResolution))

Bugs

O script funciona sem problemas no Windows, mas  no Ubuntu 10.04 ele congela o Scribus, depois que termina, se rodado como script pelos menus. Mas pode ser colado no console do Scripter e executado com a tecla F9. Deve ser problema no módulo PIL do Python, já que o comando que causa o problema é “import Image”.

Além disso, o Scribus não coloca o caminho principal do Pythoon em sys.path, provocando erro na biblioteca regular expression (re). Isto é corrigido no script:

if sys.platform != 'win32':
    sys.path.append("/usr/lib/python2.6") # prevent 'import re' PIL bug in Scribus 1.3.8, Ubuntu 10.04

Isto foi resolvido a partir do Ubuntu 12.04, a agora o PIL não tranca mais o Scribus.

About José Antonio Meira da Rocha

Jornalista, professor das áreas de Editoração e de Mídias Digitais na Universidade Federal de Santa Maria, campus cidade de Frederico Westphalen, Rio Grande do Sul, Brasil. Doutor em Design pelo Programa de Pós-Graduação em Design (PGDesign)/Universidade Federal do Rio Grande do Sul (UFRGS), Porto Alegre, Brasil, 2023. Mestre em Mídias pela UNISINOS, São Leopoldo, RS, Brasil, 2003. Especialista em Informática na Educação, Unisinos, 1976.