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

3

Eu tenho mais de 4500 imagens PNG 24 em mais de 20 pastas que desejo reduzir o tamanho convertendo-as em PNG 8. (Além disso: eu tentei smushing e outras otimizações de png, mas as economias não são suficientes, um teste de 2 pastas em PS mostrou que o 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 corrigir isso ou outra ferramenta para o trabalho?

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

    
por Denis Hoctor 11.04.2011 / 02:23

3 respostas

3
O

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

  • Opções para sobrescrever, usar o caminho original (como saída) e / ou manter a estrutura da subpasta.
  • Adicione a transformação "Converter & converter em cores" na guia Transformações. Um dos parâmetros é bits / pixel.
por 11.04.2011 / 04:22
1

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 Inserir item de menu. Em seguida, basta clicar em arquivo - > Salve . Clique OK. Agora deve ser o último subitem dentro de sua ação.

Agora, quando você executa o lote, o material permanece na subpasta como deveria.

    
por 11.04.2011 / 02:45
0

Instale o ImageMagick e execute com o 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
} 

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

 
    
por 26.10.2017 / 04:43