
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
}
#--------------------------------------------------------------