Connect failed: Connection timed out

[GastForen Programmierung/Entwicklung AppleScript InDesign CS2: Resize Script auf einzelnes Bild anwenden?

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

InDesign CS2: Resize Script auf einzelnes Bild anwenden?

Anonym
Beiträge gesamt: 22827

6. Dez 2006, 07:17
Beitrag # 1 von 11
Bewertung:
(3907 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Leute ich war letztes Jahr schon mal hier und mir wurde super geholfen. Letztes Jahr benötigte ich ein Script um im Indesign positionierte Bilder auf 100% zu skalieren und nachzuschärfen. Script funktioniert super, aber jetzt bräuchte ich dieses Script so daß ich im Indesign die aktive Bildauswahl, entsprechend im Photoshop auf 100% setzt schärft und im Indesign dieses Bild wieder an gleicher Stelle aktualisiert!!
Ich hoffe ich finde wieder eure erfolgreiche Hilfe!

Das Script bisher:


tell application "Adobe InDesign CS2"
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 CS2"
set bigVers to character 1 of (version as string) as integer
try
set ruler units of settings to point units
open file imgPath showing dialogs never
set docRef to current document
-- das Bild skalieren
if bigVers is less than 9 then
resize image docRef width percent (horVal / 100) height percent (verVal / 100) resample method bicubic
else
resize image docRef width percent horVal height percent verVal resample method bicubic
end if
-- das Bild schärfen
set artLayerList to get every art layer of docRef
repeat with layerRef in artLayerList
try
filter layerRef using custom filter with options ¬
{characteristics:{0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 10, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0}, scaling:6, offset:0}
end try
end repeat
-- das Bild sichern
set imgDoc to save docRef
-- der Variablen 'filePath' den Pfad zuweisen
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
X

InDesign CS2: Resize Script auf einzelnes Bild anwenden?

Hans Haesler
  
Beiträge gesamt: 5826

6. Dez 2006, 09:03
Beitrag # 2 von 11
Beitrag ID: #421371
Bewertung:
(3906 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo thampson,

welcome back! :-)

Ja, das war vor gut einem Jahr. Nachzuschlagen im Thema
"InDesign CS: Kann jemand dieses Script zum laufen bringen???"
http://www.page-online.de/page/forum/viewthread/2835/

Ich habe jetzt das Script auf die Schnelle so geändert, dass
es nur die Auswahl bearbeitet.
Code
tell application "Adobe InDesign CS2" 
activate
-- prüfen, ob ein Bildrahmen ausgewählt ist und ob die Datei vorhanden ist
tell document 1
try
set aClass to class of selection
on error
display dialog "Bitte einen Bildrahmen auswählen." buttons "OK" default button 1 with icon 2
error number -128
end try
if aClass is in {rectangle} then
set curFrame to object reference of selection
else if aClass is in {EPS, PDF, image, PICT, WMF} then
set curFrame to parent of selection
else
display dialog "Bitte einen Bildrahmen auswählen." buttons "OK" default button 1 with icon 2
error number -128
end if
try
set curPict to graphic 1 of curFrame
on error
display dialog "Der Bildrahmen ist leer." buttons "OK" default button 1 with icon 2
error number -128
end try
set curLink to item link of curPict
set imgStatus to status of curLink
if imgStatus is link missing then
display dialog "Die Bilddatei ist nicht vorhanden." buttons "OK" default button 1 with icon 2
error number -128
end if
end tell
-- 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
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 curImage to parent of curLink
-- die Skalierungsprozente des Rahmens auf 100% zurücksetzen
reset scaling of curFrame
-- den Bildpfad feststellen
set imgPath to curFile 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, dann ...
if 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
end if
end if
end if
-- 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 CS2"
set bigVers to character 1 of (version as string) as integer
try
set ruler units of settings to point units
open file imgPath showing dialogs never
set docRef to current document
-- das Bild skalieren
if bigVers is less than 9 then
resize image docRef width percent (horVal / 100) height percent (verVal / 100) resample method bicubic
else
resize image docRef width percent horVal height percent verVal resample method bicubic
end if
-- das Bild schärfen
set artLayerList to get every art layer of docRef
repeat with layerRef in artLayerList
try
filter layerRef using custom filter with options ¬
{characteristics:{0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 10, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0}, scaling:6, offset:0}
end try
end repeat
-- das Bild sichern
set imgDoc to save docRef
-- der Variablen 'filePath' den Pfad zuweisen
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

Viel Erfolg!

Gruss, Hans


als Antwort auf: [#421370]

InDesign CS2: Resize Script auf einzelnes Bild anwenden?

Anonym
Beiträge gesamt: 22827

6. Dez 2006, 09:23
Beitrag # 3 von 11
Beitrag ID: #421372
Bewertung:
(3906 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Funktioniert (natürlich) wieder einmal vom feinsten!!!!!

Besten Dank!!!


als Antwort auf: [#421370]

InDesign CS2: Resize Script auf einzelnes Bild anwenden?

Hans Haesler
  
Beiträge gesamt: 5826

6. Dez 2006, 10:07
Beitrag # 4 von 11
Beitrag ID: #421373
Bewertung:
(3906 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo thampson,

bitteschön.

Vielleicht hätte ich den Code so ändern sollen, dass alle
ausgewählten Bildrahmen berücksichtigt werden. Damit das Script
nicht mehrmals für dasselbe Dokument gestartet werden muss.
Falls dies wünschenswert ist, dann nur durchgeben.

Gruss, Hans


als Antwort auf: [#421370]

InDesign CS2: Resize Script auf einzelnes Bild anwenden?

Anonym
Beiträge gesamt: 22827

6. Dez 2006, 12:50
Beitrag # 5 von 11
Beitrag ID: #421374
Bewertung:
(3906 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Auch das wäre toll! Ich will aber keinesfalls deine Zeit, bzw Bemühungen überstrapazieren!

Gruss Timo


als Antwort auf: [#421370]

InDesign CS2: Resize Script auf einzelnes Bild anwenden?

Hans Haesler
  
Beiträge gesamt: 5826

6. Dez 2006, 13:52
Beitrag # 6 von 11
Beitrag ID: #421375
Bewertung:
(3906 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Timo,

und hier ist die Version, welche die Auswahl mehrerer Bildrahmen zulässt.

Achtung: Weil sonst die 6000-Zeichen-Limite übertreten würde, habe ich den
'resizeImage'-Handler entfernen müssen. Also nur den oberen Teil austauschen.
Code
tell application "Adobe InDesign CS2" 
activate
-- die Auswahl prüfen
set curSel to selection
set selCount to count of curSel
if selCount is 0 then
display dialog "Bitte einen Bildrahmen auswählen." buttons "OK" default button 1 with icon 2
error number -128
end if
-- die Liste der Links aufstellen
set linksList to {}
repeat with i from 1 to selCount
set curClass to class of item i of curSel
if curClass is in {rectangle} then
set curFrame to object reference of item i of curSel
try
set curLink to item link of graphic 1 of curFrame
if status of curLink is not link missing then
set end of linksList to curLink
end if
end try
else if curClass is in {EPS, PDF, image, PICT, WMF} then
set curFrame to parent of item i of curSel
try
set curLink to item link of graphic 1 of curFrame
if status of curLink is not link missing then
set end of linksList to curLink
end if
end try
end if
end repeat
if (count of linksList) is 0 then
display dialog "Die Auswahl ist ungültig." buttons "OK" default button 1 with icon 0
error number -128
end if
-- 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
set processedLinks to {}
-- 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


Frohes Resizen!

Gruss, Hans


als Antwort auf: [#421370]

InDesign CS2: Resize Script auf einzelnes Bild anwenden?

Anonym
Beiträge gesamt: 22827

18. Jul 2008, 19:43
Beitrag # 7 von 11
Beitrag ID: #421376
Bewertung:
(3906 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

Genau das was ich suche,
habe das Script getestet, bei mir wird ein platziertes 400dpi-Bild mit 54& Skalierung auf 14Pixel verkleinert, was mache ich falsch?

Gruss willem


als Antwort auf: [#421370]

InDesign CS2: Resize Script auf einzelnes Bild anwenden?

Hans Haesler
  
Beiträge gesamt: 5826

18. Jul 2008, 20:06
Beitrag # 8 von 11
Beitrag ID: #421377
Bewertung:
(3906 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Willem,

also ... wenn ich das wüsste! ;-)

Welche Versionen sind bei Dir im Einsatz? Würdest Du mir bitte die drei Dateien zustellen? (InDesign-Dokument, Bilddatei, Script.)

Gruss, Hans


als Antwort auf: [#421370]

InDesign CS2: Resize Script auf einzelnes Bild anwenden?

Anonym
Beiträge gesamt: 22827

19. Jul 2008, 22:33
Beitrag # 9 von 11
Beitrag ID: #421378
Bewertung:
(3906 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

Danke!!,
hab Dir die Daten zugesendet.

Gruss willem


als Antwort auf: [#421370]

InDesign CS2: Resize Script auf einzelnes Bild anwenden?

Hans Haesler
  
Beiträge gesamt: 5826

20. Jul 2008, 20:16
Beitrag # 10 von 11
Beitrag ID: #421379
Bewertung:
(3906 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Willem,

nach Deinen Angaben im E-Mail benutzest Du InDesign-CS2 und Photoshop-CS3 (mit InDesign CS3 würde das Script nicht funktionieren). Aber es enthält einen Test, welcher ursprünglich ermöglichte, dasselbe Script mit Photoshop CS und CS2 zu verwenden.

Dieser Test prüft das erste Zeichen der Version. Falls dieses kleiner ist, als 9, dann werden beim Skalieren die Bildprozente durch 100 geteilt, analog dem Funktionieren von Photoshop 8. Mit Photoshop 9 (= CS2) können die Prozentwerte unverändert übernommen werden.

Doch mit Deinem Photoshop 10 wird die "1" aus der "10" gezogen. Das Script erkennt das Resultat als "kleiner als 9". In der Folge werden die 54% zu 0.54% und das Bild wird entsprechend verkleinert.

Abhilfe: Den Test entfernen, dann werden die realen Prozentwerte eingesetzt.

Das modifizierte Script ist unterwegs zu Dir.

Gruss, Hans


als Antwort auf: [#421370]

InDesign CS2: Resize Script auf einzelnes Bild anwenden?

Anonym
Beiträge gesamt: 22827

20. Jul 2008, 20:36
Beitrag # 11 von 11
Beitrag ID: #421380
Bewertung:
(3906 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

das finde ich super!!!
ich freu mich auf Dein Script.

Grüsse willem


als Antwort auf: [#421370]
X