Wie kann ich mehrere Ordner mit Bildern stapelweise in PNG8 konvertieren?

Wie kann ich mehrere Ordner mit Bildern stapelweise in PNG8 konvertieren?

Ich habe mehr als 4.500 PNG 24-Bilder in mehr als 20 Ordnern, deren Größe ich durch Konvertierung in PNG 8 reduzieren möchte. (Abgesehen davon: Ich habe Smushing und andere PNG-Optimierungen ausprobiert, aber die Einsparungen reichen nicht aus. Ein Test mit 2 Ordnern in PS hat ergeben, dass PNG 8 ohne nennenswerte Verschlechterung der Bilder möglich sein sollte.)

Als ich PS CS3 Batch ausprobiert habe, wurden die Originale nicht überschrieben und die neu erstellten Dateien haben keine Ordnerstruktur. Gibt es eine Möglichkeit, das zu beheben, oder gibt es ein anderes Tool für diese Aufgabe?

Ich verwende OSX, habe aber Zugriff auf Windows XP/7.

Antwort1

XnViewbehandelt die Stapelverarbeitung/-konvertierung. Ctrl+ U: „Tools -> Stapelverarbeitung …“

  • Optionen zum Überschreiben, Verwenden des ursprünglichen Pfads (als Ausgabe) und/oder Beibehalten der Unterordnerstruktur.
  • Fügen Sie die Transformation „Konvertieren > In Farben konvertieren“ aus der Registerkarte „Transformationen“ hinzu. Einer der Parameter ist Bits/Pixel.

Antwort2

Das ist nervig, oder? Hier ist der Trick. Nachdem Sie Ihre Aktionen aufgezeichnet haben, um sie in PNG8 zu konvertieren, klicken Sie auf die obere rechte Ecke der Aktionspalette und wählen Sie Menüpunkt einfügen. Klicken Sie dann einfach auf Datei --> Speichern. Klicken Sie auf OK. Es sollte jetzt das letzte Unterelement in Ihrer Aktion sein.

Wenn Sie jetzt die Stapelverarbeitung ausführen, bleiben die Inhalte wie vorgesehen in den Unterordnern.

Antwort3

Installieren Sie ImageMagick und führen Sie es mit Powershell aus

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

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

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

 

verwandte Informationen