Hi, all!
I’m struggling to get this script-fu registered. Gimp says it´s expecting an integer value for the SF-FILENAME default argument.
Can you all help me find the real problem on my script? Thanks!
(define (ler-palavras-do-arquivo arquivo)
(define (ler-linhas arquivo)
(with-input-from-file arquivo
(lambda ()
(define linhas '())
(define fim? (eof-object? (peek-char)))
(begin
(while (not fim?)
(define linha (read-line))
(set! linhas (append linhas (list linha)))))
linhas)))
(ler-linhas arquivo))
(define (centra-texto-na-imagem base-image arquivo)
(let* (
; Lê as palavras do arquivo
(palavras (ler-palavras-do-arquivo arquivo))
; Obtém as dimensões da imagem base
(largura-base (car (gimp-image-width base-image)))
(altura-base (car (gimp-image-height base-image)))
; Função para criar a imagem com a palavra e exportar para PNG
(cria-imagem-com-palavra (lambda (palavra)
(begin
; Cria uma nova camada de texto com a palavra
(define texto-layer (car (gimp-text-fontname base-image
0 0
palavra
0 TRUE 105 "DTLProkyonTLight Medium")))
; Obtém as dimensões da camada de texto
(define texto-largura (car (gimp-item-width texto-layer)))
(define texto-altura (car (gimp-item-height texto-layer)))
; Calcula as novas coordenadas para centralizar o texto
(define nova-x (- (/ largura-base 2) (/ texto-largura 2)))
(define nova-y 167)
; Move o texto para o centro da imagem
(gimp-item-transform-translate texto-layer nova-x nova-y)
; Adiciona a camada de texto à imagem base
(gimp-image-insert-item base-image texto-layer 0)
; Atualiza a visualização
(gimp-displays-flush)
; Define o nome do arquivo PNG para salvar
(define arquivo-png (string-append palavra ".png"))
; Exporte a imagem para PNG
(file-png-save2 base-image
(car (gimp-image-active-drawable base-image))
arquivo-png
arquivo-png
0 ; Não interativo
9 ; Qualidade máxima
TRUE ; Compressão automática
TRUE ; Excluir metadados
TRUE ; Interlaced
0 ; Não mostrar visualização
0 ; Não incluir a transparência
))
; Deleta a camada de texto para preparar para a próxima palavra
(gimp-item-delete texto-layer)))))
; Para cada palavra na lista de palavras lidas do arquivo, chama a função de criar imagem com a palavra
(for-each cria-imagem-com-palavra palavras)
; Atualiza a exibição
(gimp-displays-flush))
; Registro do script no GIMP para a versão 2.10.38
(script-fu-register
"centra-texto-na-imagem" ; Nome do script
"Centra texto na imagem" ; Título
"Cria imagens com texto centralizado" ; Descrição
"Fabiano Duarte" ; Autor
"2024" ; Data
"Whatever" ; Licença
SF-IMAGE "Imagem Base" 0 ; Parâmetro de imagem (0 para imagem ativa)
SF-FILENAME "Arquivo de Palavras" (string-append gimp-data-directory "") ; Parâmetro de arquivo de palavras (caminho padrão vazio)
)
; Registra o script no menu do GIMP
(script-fu-menu-register "centra-texto-na-imagem" "<Image>/Filters/Script-Fu")