Come posso convertire in batch più cartelle di immagini in PNG8?


3

Ho più di 4500 immagini PNG 24 in 20+ cartelle che desidero ridurre le dimensioni convertendole in PNG 8. (A parte: ho provato lo smushing e altre ottimizzazioni del png ma i risparmi non sono sufficienti, una prova di 2 cartelle in PS indicano che PNG 8 dovrebbe essere senza degrado significativo delle immagini)

Quando ho provato PS CS3 Batch non si salvava sugli originali e i nuovi file creati non hanno una struttura di cartelle. C'è un modo per risolvere questo o un altro strumento per il lavoro?

Sto usando OSX ma ho accesso a Windows XP / 7.


Cosa hai usato per provare a scricchiolare le immagini? Ho risposto a una domanda simile oh Webmasters. Ho avuto risultati fantastici con i PNG. Photoshop è assolutamente terribile con il salvataggio, soprattutto se non si utilizza Salva per Web / dispositivi. webmasters.stackexchange.com/questions/13/...
Bryson

Sì, ho provato l'immagine ImageOptim per prima dopo averla menzionata su un q su StackOverflow. Tuttavia ho ottenuto la migliore riduzione complessiva da PNGGauntlet che ho usato in VirtualBox Win7. Anche XnView era buono.
Denis Hoctor

Risposte:


3

XnView gestisce l'elaborazione / conversione in batch. Ctrl + U : "Strumenti - & gt; Elaborazione batch ..."

  • Opzioni da sovrascrivere, utilizzare il percorso originale (come output) e / o mantenere la struttura della sottocartella.
  • Aggiungi la trasformazione "Converti & gt; Converti in colori" dalla scheda Trasformazioni. Uno dei parametri è bit / pixel.

1

È un dolore no? Ecco il trucco. Dopo aver registrato le azioni per renderlo png8, fare clic nell'angolo in alto a destra della tavolozza delle azioni e scegliere Inserisci voce di menu. Quindi fai clic su file - & gt; salvare. Clicca OK. Ora dovrebbe essere l'ultimo sotto-oggetto all'interno della tua azione.

Ora quando esegui il batch, la roba rimane nella sottocartella come dovrebbe.


Grazie, suona bene ma il mio tentativo di implementare deve essere sbagliato! Ho aperto un file di test, creato una nuova azione, Saved for Web (PNG8), Aggiunto menu di salvataggio. Quando eseguo il batch, imposto l'origine alla mia cartella e faccio clic per includere le sottocartelle. Ho quindi provato la destinazione come "Nessuna" e "Salva e chiudi" con "Sostituisci azione ..." selezionata. Ma ottengo ancora i file nella directory principale della cartella non nelle sottocartelle.
Denis Hoctor

oop, mi dispiace, il modo in cui l'ho fatto è stato registrare la mia prima azione come immagine - & gt; modalità - & gt; 8 bit / canale. Ad essere onesti, non sono sicuro che sia esattamente lo stesso del PNG8 di salvataggio per web. Io penso che sia. Provalo.
CreeDorofl

0

Installa ImageMagick ed esegui con 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
} 

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

 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.