[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Bilder nach Import skalieren durch Script

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Bilder nach Import skalieren durch Script

nellelli
Beiträge gesamt:

28. Jun 2006, 22:03
Beitrag # 1 von 32
Bewertung:
(17604 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo liebe Leute,

wäre es möglich (evtl. per Script), Bildern direkt nach dem Import (außerhalb des Satzspiegels, um sie später einzubinden) eine feste Größe von sagen wir mal 80x40mm zu geben, so dass nicht nur der Bildrahmen, sondern auch das Bild an sich diese Werte annimmt? Hab das Problem, dass ich jedes platzierte Bild manuell an das Grundlinienraster anpassen muss, und da fehlen seitlich und oben bzw. unten ein paar Null-Komma-irgendwas-Millimeter. Bilder so zu skalieren ist nicht schön, aber in diesem Fall notwendig.

Vielen Dank für eure Hilfe!
Nellelli
X

Bilder nach Import skalieren durch Script

Martin Fischer
  
Beiträge gesamt: 12891

28. Jun 2006, 23:19
Beitrag # 2 von 32
Beitrag ID: #236736
Bewertung:
(17588 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hier die Folterbank für Bilder:
Code
  1. // imagesStraightJacket.jsx
    //DESCRIPTION: Preßt alle platzierten Bilder in eine Zwangsjacke mit einer bestimmten Breite und Höhe.

    var myWidth = 80; // Breite
    var myHeight = 40; // Höhe

    var myDoc = app.documents[0];
    var myLinks = myDoc.links;

    for (oneLink = 0; oneLink < myLinks.length; oneLink++)
    {
    myBounds = myLinks[oneLink].parent.geometricBounds;
    myLinks[oneLink].parent.geometricBounds = [myBounds[0], myBounds[1], myBounds[0] + myHeight, myBounds[1] + myWidth];
    myLinks[oneLink].parent.parent.fit(FitOptions.frameToContent)
    }



als Antwort auf: [#236727]
(Dieser Beitrag wurde von Martin Fischer am 28. Jun 2006, 23:29 geändert)

Bilder nach Import skalieren durch Script

nellelli
Beiträge gesamt:

29. Jun 2006, 07:49
Beitrag # 3 von 32
Beitrag ID: #236750
Bewertung:
(17571 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank, Martin, genau was ich brauche.

Grüße
Nellelli


als Antwort auf: [#236736]

Bilder nach Import skalieren durch Script

nellelli
Beiträge gesamt:

29. Jun 2006, 20:05
Beitrag # 4 von 32
Beitrag ID: #236917
Bewertung:
(17542 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

hab ich doch ein bisschen schnell geschossen ... Das Script skaliert jedes Element im Dokument. Wie kann ich es anpassen, dass es nur das momentan aktive skaliert?

Danke wie immer und viele Grüße
Nellelli


als Antwort auf: [#236736]

Bilder nach Import skalieren durch Script

Martin Fischer
  
Beiträge gesamt: 12891

29. Jun 2006, 21:04
Beitrag # 5 von 32
Beitrag ID: #236926
Bewertung:
(17526 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Nellelli,

das folgende Skript behandelt alle markierten Objekte.
Code
  1. // StraightJacket4OneImageOnly.jsx
    //DESCRIPTION: Preßt alle markierten Bilder in eine Zwangsjacke mit einer bestimmten Breite und Höhe.

    var myWidth = 80; // Breite
    var myHeight = 40; // Höhe

    if (app.selection.length > 0)
    var mySel = app.selection;
    else
    {
    alert("Fehler!\rSo geht es nicht.\rNichts ausgewählt.");
    exit();
    }

    for (oneItem = 0; oneItem < mySel.length; oneItem++)
    {
    if (mySel[oneItem].constructor.name == "Rectangle")
    {
    var myBounds = mySel[oneItem].geometricBounds;
    mySel[oneItem].geometricBounds = [myBounds[0], myBounds[1], myBounds[0] + myHeight, myBounds[1] + myWidth];
    mySel[oneItem].fit(FitOptions.contentToFrame);
    }
    else
    alert("Fehler!\rDu hast einen \""+ mySel[oneItem].constructor.name + "\" ausgewählt.\rIch brauche einen Bildrahmen!");
    }
    alert("Fertig!")



als Antwort auf: [#236917]

Bilder nach Import skalieren durch Script

nellelli
Beiträge gesamt:

29. Jun 2006, 21:47
Beitrag # 6 von 32
Beitrag ID: #236930
Bewertung:
(17521 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Klasse! Besten Dank und einen schönen Abend wünscht

Nellelli


als Antwort auf: [#236926]

Bilder nach Import skalieren durch Script

indy27
Beiträge gesamt: 32

3. Jan 2007, 10:07
Beitrag # 7 von 32
Beitrag ID: #268896
Bewertung:
(17315 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo,

tolles script - eine frage hätte ich jedoch dazu:
wie kann man zusätzlich auch noch bestimmen, wo der verkleinerte rahmen dann seine x/y-position haben soll - derzeit nimmt er ja einfach 0/0. ich hätte jedoch lieber ca. 2cm weiter unten (vom linken rand würde der standard-abstand passen)

danke!

lg

ferdinand


als Antwort auf: [#236926]

Bilder nach Import skalieren durch Script

Martin Fischer
  
Beiträge gesamt: 12891

3. Jan 2007, 10:51
Beitrag # 8 von 32
Beitrag ID: #268905
Bewertung:
(17311 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Ferdinand,

die Koordinaten werden in dieser Zeile festgelegt:
Code
  1. mySel[oneItem].geometricBounds = [myBounds[0], myBounds[1], myBounds[0] + myHeight, myBounds[1] + myWidth];


Die allgemeine Syntax lautet:
Code
  1. meinObjekt.geometricBounds = [y-Wert oben, x-Wert links, y-Wert unten, x-Wert rechts]

Beachte: Indesign will anders als der Mathe-Lehrer erst den y-Wert, dann den x-Wert.

Du müßtest in Deinem Fall die obige Zeile also folgendermaßen anpassen:

Code
  1. mySel[oneItem].geometricBounds = [myBounds[0] + 2, myBounds[1], myBounds[0] + myHeight + 2, myBounds[1] + myWidth];


oder eleganter über eine neue "Verschiebe-Variable", in der y- und x-Wert gespeichert sind:
Code
  1. var myDislocation = [2, 0]; // 2 nach unten, 0 nach rechts
    mySel[oneItem].geometricBounds = [myBounds[0] + myDislocation[0], myBounds[1] + myDislocation[1], myBounds[0] + myHeight + myDislocation[0], myBounds[1] + myWidth + myDislocation[1]];



als Antwort auf: [#268896]

Bilder nach Import skalieren durch Script

Gerald Singelmann
  
Beiträge gesamt: 6293

3. Jan 2007, 11:41
Beitrag # 9 von 32
Beitrag ID: #268914
Bewertung:
(17293 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Martin, ich glaube, Ferdinand wollte nicht den Rahmen anders positionieren, sondern das Bild im Rahmen.
Das wird dann natürlich gleich viel komplizierter.


als Antwort auf: [#268905]

Bilder nach Import skalieren durch Script

indy27
Beiträge gesamt: 32

3. Jan 2007, 11:46
Beitrag # 10 von 32
Beitrag ID: #268916
Bewertung:
(17291 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo martin,

danke - funktioniert super!
gibts übrigens eine möglichkeit, dass indesign alle rahmen von allen seiten auswählen soll? mir ist gerade aufgefallen, mit "apfel"+"a" markiert er nur die rahmen des aktuellen druckbogens, aber nicht von allen 50 seiten.

danke!

lg


ferdinand


als Antwort auf: [#268905]

Bilder nach Import skalieren durch Script

Martin Fischer
  
Beiträge gesamt: 12891

3. Jan 2007, 12:03
Beitrag # 11 von 32
Beitrag ID: #268921
Bewertung:
(17285 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Auswählen kann man tatsächlich nur Objekte des aktiven Druckbogens - auch per Skript.
Aber man könnte per Skript blind (ohne Auswahl) alle Bildrahmen abarbeiten.

Ohne es geprüft zu haben, müßte das durch folgende Umdefinition der Variable mySel funktionieren:

Code
  1. var mySel = app.documents[0].rectangles;


Freilich müßten dann die Bedingungen (if-Abfragen) noch angepaßt werden.
Ganz allgemein könnte man alle graphischen Rahmen folgendermaßen behandeln:

Code
  1. var myWidth = 80; // Breite
    var myHeight = 40; // Höhe

    var mySel = app.documents[0].rectangles;
    for (oneItem = 0; oneItem < mySel.length; oneItem++)
    {
    var myBounds = mySel[oneItem].geometricBounds;
    mySel[oneItem].geometricBounds = [myBounds[0], myBounds[1], myBounds[0] + myHeight, myBounds[1] + myWidth];
    mySel[oneItem].fit(FitOptions.contentToFrame);
    }
    alert("Fertig!")



als Antwort auf: [#268916]

Bilder nach Import skalieren durch Script

indy27
Beiträge gesamt: 32

3. Jan 2007, 12:16
Beitrag # 12 von 32
Beitrag ID: #268927
Bewertung:
(17269 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo martin,

danke, funktioniert!
allerdings auch ohne änderung des if-teils
ich habe nur die erste code-zeile eingesetzt.

danke nochmals!
lg

ferdinand


als Antwort auf: [#268921]

Bilder nach Import skalieren durch Script

speedy33
Beiträge gesamt: 34

5. Mai 2009, 18:02
Beitrag # 13 von 32
Beitrag ID: #395249
Bewertung:
(16394 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Tolles Skript, aber ich habe mal ein Frage, ich bin gerade dabei das Skript auf meine Ansprüche umzubauen, aber ich habe nicht ganz so viel Ahnung mit den Skriptbefehlen.
Das erwähnte Skript skaliert die Bilder ja genau auf 8 x 4 cm. Ich bräuchte aber ein Skript, in dem nur die Bildbreite feststeht und die Höhe proportional dazu skaliert wird. Kann mir jemand weiterhelfen?

Grüße Sebastian


als Antwort auf: [#268927]

Bilder nach Import skalieren durch Script

Martin Fischer
  
Beiträge gesamt: 12891

6. Mai 2009, 08:08
Beitrag # 14 von 32
Beitrag ID: #395284
Bewertung:
(16342 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Sebastian,

Zitat Ich bräuchte aber ein Skript, in dem nur die Bildbreite feststeht und die Höhe proportional dazu skaliert wird. Kann mir jemand weiterhelfen?

Man könnte das Bild auf Breite bringen, proportional an Rahmen anpassen und dann den Rahmen an den Inhalt anpassen. Das geht aber nur, wenn das Bild ursprünglich schmaler ist als gewünscht.

Wenn das Bild ursprünglich breiter ist als das Ziel, dann muss man erst den Inhalt proportional an den neuen Rahmen anpassen und dann den Rahmen an den Inhalt anpassen.

Das müsste etwa so gehen:
Code
  1. var myWidth = 18; // Breite

    var mySel = app.documents[0].rectangles;
    for (oneItem = 0; oneItem < mySel.length; oneItem++)
    {
    if (mySel[oneItem].graphics.length != 0)
    {
    var myBounds = mySel[oneItem].geometricBounds;
    var myFillProp = ( myBounds[3] - myBounds[1] < myWidth )
    ? true
    : false;
    mySel[oneItem].geometricBounds = [myBounds[0], myBounds[1], myBounds[2] , myBounds[1] + myWidth];
    myFillProp
    ? mySel[oneItem].fit(FitOptions.FILL_PROPORTIONALLY)
    : mySel[oneItem].fit(FitOptions.PROPORTIONALLY);
    mySel[oneItem].fit(FitOptions.FRAME_TO_CONTENT);
    }
    }
    alert("Fertig!")



als Antwort auf: [#395249]
(Dieser Beitrag wurde von Martin Fischer am 6. Mai 2009, 08:13 geändert)

Bilder nach Import skalieren durch Script

speedy33
Beiträge gesamt: 34

6. Mai 2009, 17:58
Beitrag # 15 von 32
Beitrag ID: #395416
Bewertung:
(16295 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das Skript funzt einwandfrei... dankeschön! Auch wenn ich noch am Anfang stehe, ich habe es zumindestens noch hinbekommen mir aufbauend auf deinem Skript ein zweites zu schreiben, in dem der Inhalt an den Rahmen angepasst wird und nicht umgekehrt... jetzt habe ich zwei tolle Skripts die mir meine Arbeit sehr erleichtern. Ich muss mich da mal unbedingt tiefer in die Materie einarbeiten. Skripts scheint ja eine Menge neue Möglichkeiten zu eröffnen!

Gruß Sebastian


als Antwort auf: [#395284]
X