Pergunta

Tenho uma grande quantidade de imagens que inicialmente tinham fundo preto, depois a cor preta sólida foi removida deixando a imagem com bordas escuras pixeladas.

Estou procurando uma maneira de processar em lote essas imagens para apagar a cor dos pixels pretos adjacentes aos pixels transparentes ou para suavizar a borda, deixando as bordas pretas não tão irregulares.

Eu tinha xnview, irfanview e GIMP, mas não consigo encontrar um método adequado para fazer isso além de manualmente com o GIMP usando a varinha mágica na área transparente, aumentando um pixel e apagando a cor preta.

Alguma ideia?Estou falando de mais de 800 imagens, então o processamento em lote é muito importante.Eles são gerados automaticamente a partir de modelos 3D.

Vou continuar olhando por aí enquanto isso!

Foi útil?

Solução

O Photoshop pode ser programado e o AFAIK gimp também.O Photoshop possui referências de script para vbscript, javascript e apple(script?), bem como exemplos enterrados nas pastas instaladas em formato PDF.Verifique os documentos.

Criei uma técnica para selecionar transparência em uma postagem no fórum e a transferi para vbscript.Ele cria uma ação temporária que seleciona a transparência da camada atual na referência do aplicativo atual (passada).Os princípios básicos de abertura de arquivos, salvamento de arquivos, etc. são abordados nas referências.

O exemplo de vbscript abaixo encontrará o Photoshop, o trará para frente e tentará carregar a transparência no documento aberto no momento.O Homem Óbvio diz que isso falhará se você ainda não tiver aberto o PS e carregado um documento, ou se o seu documento não tiver transparência aplicada.YMMV.

Set appRef = CreateObject("Photoshop.Application")
appRef.BringToFront
loadTransparency appRef

    function loadTransparency(appRef)
        dim desc
        dim ref
        dim ref1

        set desc = CreateObject( "Photoshop.ActionDescriptor" )
        set ref = CreateObject( "Photoshop.ActionReference" )
        ref.putProperty appRef.charIDToTypeID( "Chnl" ), appRef.charIDToTypeID( "fsel" ) 
        desc.putReference appRef.charIDToTypeID( "null" ), ref 

        set ref1 = CreateObject( "Photoshop.ActionReference" )
        ref1.putEnumerated appRef.charIDToTypeID( "Chnl" ), appRef.charIDToTypeID( "Chnl" ), appRef.charIDToTypeID( "Trsp" )
        desc.putReference appRef.charIDToTypeID( "T   " ), ref1 

        appRef.ExecuteAction appRef.charIDToTypeID( "setd" ), desc, 3   '3 = no dialogs

    end function
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top