• In eigener Sache!

    Liebe Mitglieder, liebe Besucher und Gäste
    ich weiß, es ist ein leidiges Thema, aber ich muss es ansprechen: Werbung, Werbeblocker und Finanzierung des Forums.
    Bitte hier weiterlesen ...

  • Neuer Partner: AkkuShop.de
    Akkus, Ladegeräte und mehr (nicht nur) für Digitalkameras und Drohnen
  • Nicht erreichbare Adressen im Benutzerkonto
    Wir bekommen zurzeit eine große Anzahl an E-Mails, die das System zum Beispiel als Benachrichtigungen an Nutzer verschickt,
    als unzustellbar zurück, weil z.B. die Adressen nicht erreichbar sind oder das Postfach gar nicht existiert.
    Stellt doch bitte sicher, dass die Benachrichtigungen, die ihr vom System erwartet, auch zugestellt werden können.
    Nicht erreichbare E-Mail-Adressen sind dazu wenig hilfreich.
    Danke!
  • Stimmt ab über die Sieger des DSLR-Forum Fotowettbewerbs April 2025.
    Thema: "Plastik (Kunststoff)"

    Nur noch bis zum 30.04.2025 23:59!
    Jeder darf abstimmen!
    Zur Abstimmung und Bewertung hier lang
  • Neuer Gutscheincode unseres Partners Schutzfolien24:
    DSLR-Forum2025
    Dauerhaft 10% Rabatt auf alle Displayschutzfolien und Schutzgläser der Eigenmarken
    "Upscreen", "Screenleaf", BROTECT" und "Savvies".
    Der Code ist für alle Geräteklassen gültig.
  • Unlauterer Verkäufer wieder unterwegs!

    Liebe Mitglieder,
    Florian Franzek, der seit Jahren mit verschiedensten Usernamen in allen möglichen Foren und auf etlichen Verkaufsplattformen auftritt,
    ist wieder hier im Forum und versucht, ehrliche Käufer zu betrügen.
    Wir können wenig tun, außer bei Bekanntwerden einer weiteren Registrierung eines Accounts für seine Machenschaften, diese umgehend zu sperren.
    Ich empfehle, bei Kontakt umgehend die Polizei einzuschalten.

WERBUNG

Photoshop script speichern mit "feste Dateigröße"

***elvis***

Themenersteller
moin,

ich such eine Möglichkeit am ende einer Aktion ein automatisches speichern in einen festgelegten Ordner mit vorgegebner Dateigröße ablaufen zu lassen.

Hintergrund: Ich habe unterschiedlich großes Ausgangansmaterial. Wenn ich nun in der Aktion "speichern unter" mit "Stufe 8" z.B. aufzeichne, hat das Bild mal 0,8 MB, mal 1,5 MB oder 2,8MB, je nach Ausgangsgröße.

Ich möchte aber die Dateigröße vorgeben z.B. 1,2 MB das z.B. das kleinere Bild mit Stufe 1o komprimiert wird und das größe mit Stufe 6. Als Ergebnis habe ich dann ungefähr gleich große Dateien ca. 1,2 MB

"Für web speichern" geht nicht, dort kann ich zwar die Dateigröße angeben und seit CS4 können dort auch die Metadaten mit gespeichert werden, aber in die Aktion werden nicht die vorgabe der Dateigröße geschrieben sondern die Qualitätsstufe für das Bild beim Aufzeichnen.

Kennt jemand ein script oder eine Möglichkeit in Photoshop ein speichern mit vorgegebener Dateigröße zu realisieren?

Danke
 
Ich habe mal mit Photoshop Script einen Prototypen zusammengebaut. Prototyp heisst, es funktioniert mit CS4 und Win7, aber es fehlt jegliche Fehlerbehandlung. Ausserdem muss bei Bedarf die Scriptdatei angepasst werden.
Für den weiteren Ausbau des Scripts fehlt mir im Moment die Zeit.
Der erste Anhang zeigt eine Aktion, mit der es bei mir auch in der Stapelverarbeitung funktioniert. Wichtig ist in der Aktion alles so vorzubereiten, dass die Datei auch als JPG gespeichert werden kann. Der zweite Anhang ist das gezippte Script.

Das Script mit den Hinweisen:
Code:
var limit = 400;                 // Groesse in kB
var folder = "/c/Windows/Temp";  // Verzeichnis fuer das Abspeichern

// Hinweise: 
//          1. Bei Stapelverarbeitung darf der Haken bei
//             Speichern unter in Aktionen nicht gesetzt sein.
//          2. Die Aktion darf kein Schliessen beinhalten oder das 
//             letzte Statement im Script muss auskommentiert werden.
//          3. Unabhängig vom gesetzten Verzeichnis in der Stapelverarbeitung
//             wird nur in das oben definierte Verzeichnis folder geschrieben.
          
  
//----------------------------------------------------
var aD = app.activeDocument;

// Dateiname ohne Pfad und Extension ermitteln
var filename = aD.name.replace(/\.[^\.]+$/, '');

// JPG Optionen setzen
var jpegOptions = new JPEGSaveOptions();
jpegOptions.embedColorProfile = true;

// Variable i setzt JPG Kompressionsstufe
var i = 13;

// do-while speichert Datei beginnend mit 12
// wenn Datei kleiner Grenzwert oder Stufe 0 erreicht, Ende
do {
  i--;
  jpegOptions.quality = i;

  var new_file = new File((folder + "/" + filename + ".jpg"));
  aD.saveAs(new_file, jpegOptions, true);

} while ((new_file.length/1024 > limit) && i > 0);

// Originaldatei ohne Aenderungen schliessen
aD.close(SaveOptions.DONOTSAVECHANGES);

Mit den Hinweisen ist es hoffentlich selbsterklärend. Bei der Variable folder mit Groß-/Kleinschreibung aufpassen.

Wenn Du immer wieder die drei gleichen verschiedenen Dateigrößen benötigst, würde ich die Script-Datei dreimal kopieren und entsprechend umbenennen, z. B. mit der Dateigröße im Namen. In den drei Scripts dann die maximale Größe anpassen (limit). Und dann drei Verzeichniss für diese Dateigröße einrichten mit der Dateigröße im Verzeichnisnamen. Und schließlich drei Aktionen dafür anlegen.
Klingt komplizierter als es ist und muss ja auch nur einmal gemacht werden.

Teste mal mit gut gesicherten Beispieldateien.
 
Zuletzt bearbeitet:
die Idee von shreblov ist nicht schlecht, aber nicht Optimal...

Das Problem dabei ist, das bei den Stufen (12 - 1) zuviel "verschenkt" wird.
Bei "web/Geräte speichern" hat man ja 100 - 1 als kompressionsstufe, das liefert doch bessere ergebnisse.

unter http://www.codeconscious.com/photoshop/save-small-jpeg/index.html findet man ein script, welches das mit "für web/geräte speichern" macht und das kommt aus meiner sicht zu besseren ergebnissen.

Habe da auch lange lange nach gesucht und dann diese Idee für mein ganz eigenes Skript adaptiert da ich so einige andere Anforderungen hatte und nur eine "inspiration" brauchte.
 
Ich habe mal mit Photoshop Script einen Prototypen zusammengebaut...

Absolut Klasse, macht genau das was es soll und wie es soll. Läuft mit CS3 und XP einwandfrei. War einige Zeit unterwegs und bin erst jetzt zum testen gekommen.

Ganz großes DANKE :top::top::top:

Er fängt bei der höchsten Komprimierung an und arbeit sich solange durch bis er die voreingestellte größe hat. Besteht die Möglichkeit das umzudrehen, das er also mit der geringsten Kompriemierungsstufe anfängt zu testen. Das würde bei eine Ziel von 1MB schneller zum Ergebnis führen als andersherum?

Nochmal ein ganz großes DANKE
 
Erst mal danke für das DANKE :)

Besteht die Möglichkeit das umzudrehen, das er also mit der geringsten Kompriemierungsstufe anfängt zu testen. Das würde bei eine Ziel von 1MB schneller zum Ergebnis führen als andersherum?
Ich bin "oben" angefangen, da ich vorher immer über "Bild einpassen" die lange Seite auf 900Px skaliere. Da komme ich dann bei meinen üblichen Größen mit Stufe 11-8 hin, bin also von oben beginnend schneller durch.
Außerdem lässt sich das einfacher programmieren: von oben kommend speicher ich, bis die Dateigröße kleiner als das Limit ist und fertig. Von unten kommend muss ich solange speichern, bis die Dateigröße über dem Limit ist und dann noch einmal mit der nächstkleineren Stufe. Es sei denn, die Dateigröße ist mit Stufe 12 immer noch unter dem Limit.
Das sieht dann so aus:
Code:
var limit = 400;                 // Groesse in kB
var folder = "/e/Temp";  // Verzeichnis fuer das Abspeichern

// Hinweise: 
//          1. Bei Stapelverarbeitung darf der Haken bei
//             Speichern unter in Aktionen nicht gesetzt sein.
//          2. Die Aktion darf kein Schliessen beinhalten oder das 
//             letzte Statement im Script muss auskommentiert werden.
//          3. Unabhängig vom gesetzten Verzeichnis in der Stapelverarbeitung
//             wird nur in das oben definierte Verzeichnis folder geschrieben.
          
  
//----------------------------------------------------
var aD = app.activeDocument;

// Dateiname ohne Pfad und Extension ermitteln
var filename = aD.name.replace(/\.[^\.]+$/, '');

// JPG Optionen setzen
var jpegOptions = new JPEGSaveOptions();
jpegOptions.embedColorProfile = true;


// Variable i setzt JPG Kompressionsstufe
var i = 0;

// Merker fuer groesste Kompressionsstufe unter limit
var unter_limit = 12;

// do-while speichert Datei beginnend mit 1
// wenn Datei groesser Grenzwert oder Stufe 12 erreicht, Ende
do {
  i++;
  jpegOptions.quality = i;

  var new_file = new File((folder + "/" + filename + ".jpg"));
  aD.saveAs(new_file, jpegOptions, true);

  if (new_file.length/1024 > limit)
     unter_limit = i - 1;

} while ((new_file.length/1024 < limit) && i < 12);

// unter_limit wird nur gesetzt, wenn eine Datei groesser limit
// gespeichert wurde. Dann ist unter_limit ungleich 12 und es muss
// nochmal mit der Kompressionsstufe unter_limit gespeichert werden.
// Sonst wurde bereits erfolgreich mit der groessten Stufe gespeichert.
if (unter_limit != 12) {
 jpegOptions.quality = unter_limit;
 if (unter_limit != 0)
    aD.saveAs(new_file, jpegOptions, true);
}

// Originaldatei ohne Aenderungen schliessen
aD.close(SaveOptions.DONOTSAVECHANGES);

Kannst ja mal testen, damit ist dann auch die Frage beantwortet, ob die Möglichkeit besteht.
 
Zuletzt bearbeitet:
Nutz jemand dieses Script auf einem Mac?

Ich plane den Umstieg vom Win zum Mac und habe derzeit nicht die Möglichkeit das zu testen. Wäre klasse wenn das mal jemand machen könnte.

DANKE
 
Leider läuft das script so nicht auf dem Mac mit CS3 :(

Über Datei - Scripten - Durchsuchen bekomme ich beim eine Fehlermeldung, siehe Anhang.

Jemand eine Idee?
 
Vermutlich machen folder, filename oder new_file das Problem. Ich hab Dir eine PN mit meiner privaten E-Mail-Adresse geschickt, müssen wir mal was ausprobieren.
 
so, Lösung gefunden

Die Pfadangabe war nicht korrekt. Wer also das script auf dem Mac nutzen will hier ein Beispiel:

Ordner in "Macintosh HD" erstellen, also direkt ins root z.B. "temp"

Die Pfadangabe im Script heißt dann: "/temp"

Pfad zur Ablage des Scriptes damit Photoshop es laden kann: "Macintosh HD - Pogramme - Adobe Photoshop CS3 - Vorgaben - Vorgaben - Scripten"

Wenn man einen anderen Ordner, ggf. auf einer anderen HD nutzen möchte, kann man wie folgt den Pfad auslesen.

Entsprechenden Ordner erstellen, Bild/Datei hinein kopieren, den Dateinamen in die Spotlight Suche eingeben und mit der Maus über den gefundenen Spotlighteintrag fahren. Das System zeigt dann den genauen Pfad an.

Das ganze läuft bei mir mit Snow Leopard und Photoshop CS3 auf meinem MBP.
 
Prima, dass es wieder läuft.
Pfad zur Ablage des Scriptes damit Photoshop es laden kann: "Macintosh HD - Pogramme - Adobe Photoshop CS3 - Vorgaben - Vorgaben - Scripten"
Meine selbsterstellten Scripte lege ich nicht in dem Photoshop-Installationsverzeichnis ab. Ich traue den Softwareherstellern immer zu, dass sie bei einem Versionsupdate das Installationsverzeichnis komplett plattmachen. Deshalb habe ich unter (Windows) "Meine Dokumente" ein Verzeichnis Skripte (und übrigens auch eins für Aktionen). Über Datei->Skripten->Durchsuchen findet man die Skripte dann einfach wieder.
 
WERBUNG
Zurück
Oben Unten