Como posso converter em lote várias pastas de imagens para PNG8?

Como posso converter em lote várias pastas de imagens para PNG8?

Tenho mais de 4.500 imagens PNG 24 em mais de 20 pastas cujo tamanho desejo reduzir convertendo-as para PNG 8. (Além disso: tentei smushing e outras otimizações de png, mas a economia não é suficiente, um teste de 2 pastas no PS mostraram que PNG 8 deveria estar sem degradação significativa das imagens)

Quando experimentei o PS CS3 Batch, ele não salvou os originais e os novos arquivos criados não têm estrutura de pastas. Existe uma maneira de consertar esta ou outra ferramenta para o trabalho?

Estou executando o OSX, mas tenho acesso ao Windows XP/7.

Responder1

XnViewlida com processamento/conversão em lote. Ctrl+ U: "Ferramentas -> Processamento em lote..."

  • Opções para substituir, usar o caminho original (como saída) e/ou manter a estrutura de subpastas.
  • Adicione a transformação "Converter > Converter em Cores" na guia Transformações. Um dos parâmetros é bits/pixel.

Responder2

Isso é uma dor, não é? Aqui está o truque. Depois de gravar suas ações para torná-lo png8, clique no canto superior direito da paleta de ações e escolha o item de menu Inserir. Em seguida, basta clicar em arquivo -> salvar. Clique OK. Agora deve ser o último subitem da sua ação.

Agora, quando você executa o lote, as coisas permanecem em sua subpasta como deveriam.

Responder3

Instale o ImageMagick e execute com Powershell

 
#--------------------------------------------------------------------

# Powershell script to recursively convert image formats
# Configuration
$srcfolder = "C:\test\Animals"
$destfolder = "C:\test\Animals"
#This ps1 file will add copy files to designated folder
#Do NOT use Mogrify or the original images will be deleted
$im_convert_exe = "convert.exe -density 300"
# with VECTOR files the density setting should come BEFORE the vector file
# or the image will be blurry.
# change src_filter to the format of the source files
$src_filter = "*.eps"
# change dest_ext to the format of the destination files
$dest_ext = "png"
$options = "-depth 8 -alpha off"
$logfile = "C:\temp\convert.log"
$fp = New-Item -ItemType file $logfile -force
$count=0
foreach ($srcitem in $(Get-ChildItem $srcfolder -include $src_filter -recurse))
{
    $srcname = $srcitem.fullname

    # Construct the filename and filepath for the output
    $partial = $srcitem.FullName.Substring( $srcfolder.Length )
    $destname = $destfolder + $partial
    $destname= [System.IO.Path]::ChangeExtension( $destname , $dest_ext )
    $destpath = [System.IO.Path]::GetDirectoryName( $destname )

    # Create the destination path if it does not exist
    if (-not (test-path $destpath))
    {
        New-Item $destpath -type directory | Out-Null
    }

    # Perform the conversion by calling an external tool
    $cmdline =  $im_convert_exe + " `"" + $srcname  + "`"" + $options + " `"" + $destname + "`" " 
    #echo $cmdline
    invoke-expression -command $cmdline

    # Get information about the output file    
    $destitem = Get-item $destname

    # Show and record information comparing the input and output files
    $info = [string]::Format( "{0} `t {1} `t {2} `t {3} `t {4} `t {5}", $count, 
    $partial, $srcname, $destname, $srcitem.Length ,  $destitem.Length)
    echo $info
    Add-Content $fp $info

    $count=$count+1
} 

#--------------------------------------------------------------

 

informação relacionada