Hallo thampson13,
und hier ist eine erste Version, für InDesign CS und Photoshop CS. Der Dateityp der Bilder wird nicht
mehr geprüft. Einzig ein Test des 'file creators' dient dazu, Vektor- und Textdateien auszuschliessen.
[[ Wenn jemand dieses Script für CS2 benötigt, bitte melden. ]]
Nebst den schon erwähnten Problemen, hat das Original-Script eine weitere Schwäche: Wenn ein Bild
gespiegelt ist, dann ist die Position der skalierten Datei komplett daneben. Ich habe die nutzlosen
Codezeilen entfernt. Nun ist das Resultat etwas besser, aber noch nicht brauchbar (Version 02 abwarten).
Wenn viele Bilder zu behandeln sind, muss man sich mit Geduld wappnen. Abwarten, bis am Schluss der
Dialog "Fertig." gezeigt wird. Dieser bleibt während zweier Sekunden sichtbar. Diese Zeitspanne kann
verlängert werden indem nach 'giving up after' die '2' durch eine höhere Zahl ersetzt wird. Falls
gewünscht: Es wäre möglich einen Status-Dialog mit Fortschrittsbalken einzubauen (Version 03 abwarten).
Die Auflösung der Dateien wird unverändert übernommen. Man könnte zu Beginn per Dialog bestimmen, welche
dpi-Zahl verwendet werden soll. Aufgepasst bei JPEG-Dateien. Es ist nicht möglich, den Kompressions-Wert
festzustellen. Es wird jener verwendet, welcher bei der zuletzt manuell gesicherten Datei gewählt wurde.
*****
Disclaimer:
Nur auf eigene Gefahr verwenden. Von allen InDesign-Dokumenten und den Bilddateien zuerst Backups
erstellen, bevor das nachfolgende Script ausgeführt wird. Die importierten Originaldateien der
Bilder werden überschrieben. Die Namen der Dateien werden unverändert übernommen.
(*
Bilder100Prozent_01d.scpt
(basierend auf "ResampleImages24.as", einem Script für CS2 von Jeff Lambert)
Dieses AppleScript geht durch alle in InDesign CS importierte Bilder. Wenn die Bildgrösse nicht 100% ist,
wird das Bild in Photoshop CS geöffnet, skaliert, gesichert. Zuletzt in InDesign CS aktualisiert und
die Bildgrösse auf 100% gesetzt.
© 23.11.2005 / Hans Haesler, Châtelard 52, CH-1018 Lausanne
*)
tell application "InDesign CS"
activate
set processedLinks to {}
-- wenn die Transformations-Vorgaben nicht als 'transformations are totals' definiert sind,
-- müssen sie angepasst werden, damit das Script richtig funktionieren kann
if transformations are totals of transform preferences is false then
set oldTransPrefs to properties of transform preferences
set transformations are totals of transform preferences to true
set show content offset of transform preferences to true
set dimensions include stroke weight of transform preferences to true
set transform content of transform preferences to true
set resetTrans to true
else
set resetTrans to false
end if
tell document 1
-- falls die Masseinheiten nicht Punkte sind, müssen sie vorübergehend geändert werden
-- damit das Script korrekt ausgeführt werden kann
if horizontal measurement units of view preferences is not points or ¬
vertical measurement units of view preferences is not points then
set oldViewPrefs to properties of view preferences
set horizontal measurement units of view preferences to points
set vertical measurement units of view preferences to points
set resetUnits to true
else
set resetUnits to false
end if
-- die Liste der Links aufstellen
set linksList to every link
-- Rückwärts-Schleife durch die Elemente der Liste
repeat with i from (count linksList) to 1 by -1
set curLink to item i of linksList
set curFile to file path of curLink as alias
set fileCreator to file creator of (info for curFile)
-- mögliche Vektor- oder Text-Dateien ausschliessen
if fileCreator is "8BIM" then
set imgName to name of curLink
set curImage to parent of curLink
set curFrame to parent of curImage
-- die Skalierungsprozente des Rahmens auf 100% zurücksetzen
reset scaling of curFrame
-- den Bildpfad feststellen
set imgPath to file path of item i of linksList as Unicode text
-- die Position des Bildes feststellen
set imgPos to geometric bounds of curImage
-- die Bildgrössen speichern
set horVal to absolute horizontal scale of curImage
set verVal to absolute vertical scale of curImage
-- die Randpositionen des Bildes ermitteln
set {y1, x1, y2, x2} to imgPos
-- wenn die Bildgrösse anders als 100% ist und die Datei noch nicht in Photoshop skaliert worden ist, dann ...
if imgPath is not in processedLinks and horVal is not 100 then
set filePath to my resizeImage(imgPath, horVal, verVal)
if filePath is not "" then
relink curLink to filePath
-- beim Updaten des Links wird das alte Link entfernt und InDesign gibt das neue zurück
set curLink to update curLink
set curImage to parent of curLink
set curFrame to parent of curImage
-- die Bildgrössen auf 100 setzen
set properties of curImage to {geometric bounds:imgPos}
resize curImage horizontal scale 100 vertical scale 100 around center anchor ¬
without considering current scale and considering parents scale
-- an die Liste den Pfad des Bildes anfügen
set end of processedLinks to imgPath
end if
else if imgPath is in processedLinks then
relink curLink to imgPath
set curLink to update curLink
set curImage to parent of curLink
set curFrame to parent of curImage
-- die Bildgrössen auf 100 setzen
set properties of curImage to {geometric bounds:imgPos}
resize curImage horizontal scale 100 vertical scale 100 around center anchor ¬
without considering current scale and considering parents scale
end if
end if
end repeat
-- die Masseinheiten zurücksetzen
if resetUnits then
tell view preferences to set properties to oldViewPrefs
end if
end tell
-- die Transformations-Vorgaben zurücksetzen
if resetTrans then
tell transform preferences to set properties to oldTransPrefs
end if
display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 2
end tell
-- der Handler, welcher in Photoshop das aktuelle Bild skaliert und überschreibt
on resizeImage(imgPath, horVal, verVal)
set filePath to ""
tell application "Adobe Photoshop CS"
try
set ruler units of settings to point units
open file imgPath showing dialogs never
set docRef to current document
-- das Bild skalieren
resize image docRef width percent (horVal / 100) height percent (verVal / 100) resample method bicubic sharper
set imgDoc to save docRef
set filePath to file path of imgDoc
close current document saving no
on error
try
close current document saving no
end try
end try
end tell
return filePath
end resizeImage
---
Diesen Code als normales Script (nicht als Programm) sichern und die Datei im Ordner "Scripts" (im Ordner "Presets"
des Programm-Ordners von InDesign-CS) unterbringen. Dann kann das Script bequem mit Doppelklick ab Scriptpalette
gestartet werden.
Gruss, Hans
als Antwort auf: [#420408]