TIF/JPG/PSD aus Photoshop werden viel zu groß / Dateigröße lässt sich nicht reduzieren

Bei einer Kundenwebsite bin ich auf ein seltsames Phänomen gestoßen: aus Photoshop gespeicherte JPG für die Website hatten bei 650 x 420 Pixel Größe etwa 1.9 Megabyte, wo schätzungsweise 100 kB für einwandfreie Qualität ausgereicht hätten. Auch das Speichern in einer anderen Qualitätsstufe brachte keine merkliche Reduktion der Dateigröße, nur mit „Für Web speichern“ funktionierte die Verkleinerung.  Wenn man diese riesigen Dateien dann in WordPress hochgeladen hat, wurden die Vorschaubilder ebenfalls nicht merklich kleiner – denn ein Bild mit 100×75 Pixel sollten definitiv keine 1.7 Megabyte haben.

Des Rätsels Lösung: der Kunde bereitet die Bilder in Photoshop vor, indem er das vorige Bild nimmt, den neuen Inhalt reinkopiert und das Resultat als JPG ohne Ebenen speichert. Photoshop schreibt dabei jedesmal in die Metadaten unter der Bezeichnung photoshop:DocumentAncestors je eine Zeile pro ursprünglicher Quelldatei rein, mit einer mindestens 32-stelligen ID. Wenn man das oft genug macht (und der Kunde betreibt ein Nachrichtenportal, wo viele Bilder so generiert werden), so hat man dann halt in einer Datei 27.000 Zeilen Metadaten drin. Die Metadaten als Textdatei weggespeichert hatten alleine 1.8 MB – daher kam also der rätselhafte Überhang der Größe.

Wie kann man prüfen, ob eine JPG-Datei diese Daten eingebettet hat?

Datei in Photoshop öffnen und unter „Datei -> Dateinformationen -> RAW-Daten“ oben im Suchfeld „ancestors“ eingeben.  Unterhalb dieser Zeile finden sich dann etliche Zeilen, die mit <rdf:li> beginnen – jede davon ist ein Eintrag. In meinem Screenshot konnte man so 27.000 Zeilen(!) weit runterscrollen. Eine weitere Möglichkeit ist mit Adobe Bridge eine komplette Sammlung durchsuchen: „Bearbeiten -> Suchen -> Kriterien: alle Metadaten -> enthält“ und photoshop:DocumentAncestors eingeben.

Wie wird man die Metadaten photoshop:DocumentAncestors wieder los?

Es gibt mehrere Möglichkeiten, diese Metadaten wieder loszuwerden. Leider bietet Photoshop meines Wissens nach keine eigene Einstellungsmöglichkeit, um das Mitprotokollieren abzuschalten. Aber es gibt dennoch Abhilfe:

Lösung 1: Metadaten in einzelner Datei mit Photoshop Script entfernen

Mit diesem Script kann man die Daten aus einer einzelnen Datei entfernen. Zeilen kopieren, in einen Texteditor kopieren und mit der Dateiendung .jsx speichern (oder das fertige Script hier herunterladen). Die Bilddatei in Photoshop öffnen, unter „Datei -> Skripten -> Durchsuchen“ das gespeicherte Script aufrufen. Danach Bilddatei speichern.

function deleteDocumentAncestorsMetadata() {
whatApp = String(app.name);//String version of the app name
if(whatApp.search("Photoshop") > 0)  { //Check for photoshop specifically, or this will cause errors
//Function Scrubs Document Ancestors from Files
if(!documents.length) {
alert("There are no open documents. Please open a file to run this script.")
return;
}
if (ExternalObject.AdobeXMPScript == undefined) ExternalObject.AdobeXMPScript = new ExternalObject("lib:AdobeXMPScript");
var xmp = new XMPMeta( activeDocument.xmpMetadata.rawData);
// Begone foul Document Ancestors!
xmp.deleteProperty(XMPConst.NS_PHOTOSHOP, "DocumentAncestors");
app.activeDocument.xmpMetadata.rawData = xmp.serialize();
}
}
//Now run the function to remove the document ancestors
deleteDocumentAncestorsMetadata();

Lösung 2: Metadaten automatisch beim Öffnen, Schließen oder Exportieren von Dateien entfernen

Das Script lässt sich auch automatisiert aufrufen, dann werden die Metadaten bei jedem Öffnen, Speichern und Exportieren einer Bilddatei entfernt. Einfach das Script per Scriptereignis-Manager (zu finden unter „Datei -> Scripts -> Scriptereignis-Manager“ ans Öffnen, Speichern und Exportieren von Dateien binden (siehe Screenshot)

Lösung 3: mit exiftool die Metadaten automatisiert aus allen Bildern in einem Ordner entfernen

Mit dem kostenlosen Kommandozeilenwerkzeug exiftool (gibts für Linux, Mac und Windows) kann man die Daten automatisiert aus allen Bildern in einem Ordner entfernen und vorher ein Backup der Datei anlegen:

exiftool -r -XMP-photoshop:DocumentAncestors= '/mac/pfad/zum/ordner'

Alternativ ohne Backup (für Mutige):

exiftool -r -overwrite_original -XMP-photoshop:DocumentAncestors= '/mac/pfad/zum/ordner'

In Windows statt einfacher Anführungszeichen doppelte “ verwenden und den vollständigen Pfad zur Datei oder zum Ordner eintragen (z.B. „C:\Users\XXX\Pictures“). Bei dieser Methode kam es bei mir allerdings bei den vom Server berechneten Vorschaubildern zu Fehlermeldungen und diese wurden nicht verkleinert.

Lösung 4: mit Photoshop-Script aus allen Dateien eines Ordners entfernen (nicht an PNG-Dateien anwenden!)

Dieses Script entfernt aus allen JPG,TIF oder PSD eines Ordners die Metadaten photoshop:DocumentAncestors, ohne die Dateien in Photoshop öffnen zu müssen (auf eigene Gefahr verwenden, nicht getestet!)

// https://forums.adobe.com/message/9671488#9671488
#target photoshop;
var inputFolder= Folder.selectDialog ("Please select folder to process");
if(inputFolder != null){
var fileList  = inputFolder.getFiles(/\.(jpg|tif|psd)$/i);
for(var a in fileList){delFileAncestorsMeta(fileList[a]);}
}
function delFileAncestorsMeta(selectedFile) {
if (ExternalObject.AdobeXMPScript == undefined) ExternalObject.AdobeXMPScript = new ExternalObject("lib:AdobeXMPScript");
var xmpFile = new XMPFile( selectedFile.fsName, XMPConst.FILE_UNKNOWN, XMPConst.OPEN_FOR_UPDATE | XMPConst.OPEN_USE_SMART_HANDLER );
var xmp = xmpFile.getXMP();
xmp.deleteProperty(XMPConst.NS_PHOTOSHOP, "DocumentAncestors");
if (xmpFile.canPutXMP(xmp)) {
xmpFile.putXMP(xmp);
xmpFile.closeFile(XMPConst.CLOSE_UPDATE_SAFELY);
}
};

Lösung 5: mit Script für Adobe Bridge einen eigenen Menübefehl fürs Entfernen der Metadaten einfügen

Mit diesem Script hat man einen neuen Menübefehl in Adobe Bridge zur Verfügung, um die Metadaten zu entfernen. Zeilen kopieren, in einen Texteditor kopieren und mit der Dateiendung .jsx speichern (oder das fertige Script hier herunterladen). Das Script in den Ordner für die Startup-Scripts von Bridge kopieren (am einfachsten zu finden über „Bearbeiten -> Voreinstellungen -> Startscripts -> EIgene Startscripts anzeigen“). Danach Bridge neu starten, nun gibts unter Werkzeuge den neuen Menübefehl „Clear DocumentAncestors in metadata“. Ein Bild auswählen, Menübefehl auswählen – fertig. Natürlich kann man auch mehrere Bilddateien auswählen, allerdings läuft das Script unsichtbar und man weiß nie recht, wann es fertig ist. Es funktioniert prinzipiell aber sehr gut und ist die von mir bevorzugte Methode.

// https://forums.adobe.com/thread/290238    
// https://forums.adobe.com/thread/1880847    
// https://forums.adobe.com/thread/2340460    
//#target bridge // let EntendScript know what app the script is for    
clearDocumentAncestors = {};// create an object    
clearDocumentAncestors.execute = function(){// create a method for that object    
 var sels = app.document.selections;// store the array of selected files    
  for (var i = 0; i < sels.length; i++){//loop though that array    
    var md = sels[i].synchronousMetadata;// get the metadata for the file    
     md.namespace = "http://ns.adobe.com/photoshop/1.0/";// set the namespace    
     md.DocumentAncestors = "";  
  }     
app.document.chooseMenuItem("Rotate90CW");  
app.document.chooseMenuItem("Rotate90CCW");  
};    
//refresh cache  
app.document.chooseMenuItem("PurgeCacheForSelected");   
// this script only works in bridge    
if (BridgeTalk.appName == "bridge"){    
  //creage the munuItem    
  var menu = MenuElement.create( "command", "Clear DocumentAncestors in metadata", "at the end of Tools");    
  menu.onSelect = clearDocumentAncestors.execute;    
};  

Diesen Beitrag teilen (bereits 0 Mal geteilt)

Ernst Michalek
Folgen:

2 Gedanken zu „TIF/JPG/PSD aus Photoshop werden viel zu groß / Dateigröße lässt sich nicht reduzieren“

  1. Ich bin erst vor ein paar Tagen auf diese Website gestoßen. Sie gefällt mir sehr gut und bietet wertvolle Infos. Vielen Dank dafür.

    Lg Mona

    Antworten

Schreibe einen Kommentar