Connect failed: Connection timed out

[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Abgeschnittene Bilder finden (CS6, WIN7)

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

Abgeschnittene Bilder finden (CS6, WIN7)

cwenet
Beiträge gesamt: 1139

23. Okt 2014, 19:51
Beitrag # 1 von 11
Bewertung:
(4565 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Abend,

ich versuche gerade in einem Dokument alle Bilder aufzuspüren, bei denen der Bildrahmen kleiner ist als das darin vorhandene Bild.

Ein Musterdokument anbei.
Oben ist der Rahmen genauso gross wie das Bild.
Im unteren Beispiel wurde der Rahmen verkleinert.
Das Bild ist also abgeschnitten. Dies kann natürlich an allen vier Seiten passieren.
Folgenden Ansatz habe ich schon.

Nun soll am Schluss eine Art Rapport entstehen:
Code
Bei folgenden Bildern ist der Rahmen kleiner: 
Bild Seite
Tulips.jpg 1


Code
var doc = app.activeDocument;  
var graphics = doc.allGraphics;


for (var g=0; g<graphics.length; g++) {
var gB_innen = graphics[g].parent.geometricBounds;
var gB_aussen = graphics[g].geometricBounds;

alert("Bild: "+ graphics[g].itemLink.name+" - "+gB_innen[0]+" - "+gB_innen[1]+" - "+gB_innen[2]+" - "+gB_innen[3]);
alert("Bild: "+ graphics[g].itemLink.name+" - "+gB_aussen[0]+" - "+gB_aussen[1]+" - "+gB_aussen[2]+" - "+gB_aussen[3]);
}


Anhang:
bilder_abgeschnitten.idml (27.4 KB)
X

Abgeschnittene Bilder finden (CS6, WIN7)

cwenet
Beiträge gesamt: 1139

24. Okt 2014, 07:44
Beitrag # 2 von 11
Beitrag ID: #533395
Bewertung:
(4496 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag,

ich sehe gerade, mein Beitragsende wurde gar nicht übertragen (sorry)

Wie kann ich nun feststellen, ob das Bild angeschnitten ist?

Bitte um Hilfe

Gruß
Christoph


als Antwort auf: [#533388]
(Dieser Beitrag wurde von cwenet am 24. Okt 2014, 07:45 geändert)

Abgeschnittene Bilder finden (CS6, WIN7)

Martin Fischer
  
Beiträge gesamt: 12779

24. Okt 2014, 08:43
Beitrag # 3 von 11
Beitrag ID: #533396
Bewertung:
(4477 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

vergleiche jeweils die Werte für die Kanten von Bild und Rahmen.

Wenn z.B. der obere y-Wert des Bilds kleiner ist als der obere y-Wert des Rahmens, dann ist ein Teil des Bildes beschnitten.
Ebenso, wenn der untere y-Wert des Bilds größer ist als der untere y-Wert des Rahmens.

Verfahre ebenso mit dem Vergleich der x-Werte.


als Antwort auf: [#533395]
(Dieser Beitrag wurde von Martin Fischer am 24. Okt 2014, 08:44 geändert)

Abgeschnittene Bilder finden (CS6, WIN7)

barsch1969
Beiträge gesamt: 52

24. Okt 2014, 09:23
Beitrag # 4 von 11
Beitrag ID: #533397
Bewertung:
(4453 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

das Ergebnis würde mich auch sehr interessieren, da wir im Katalog auch viele eng aneinander liegende Bilder haben, wo oft an den Rahemn "rumgezogen" wird und das ein oder andere Bild dann wirklich unbeabsichtigt beschnitten wird.

Gruß
Markus


als Antwort auf: [#533396]

Abgeschnittene Bilder finden (CS6, WIN7)

cwenet
Beiträge gesamt: 1139

24. Okt 2014, 14:13
Beitrag # 5 von 11
Beitrag ID: #533406
Bewertung:
(4252 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag zusammen,

das sind meine ersten Gehversuche. Aber irgendwie blicke ich jetzt nicht mehr durch.

Code
var doc = app.activeDocument;   
var graphics = doc.allGraphics;

_report = [];

var anschnitt = "alles ok";


for (var g=0; g<graphics.length; g++) {
var gB_innen = graphics[g].parent.geometricBounds;
var gB_aussen = graphics[g].geometricBounds;




if (gB_innen[0] > gB_aussen[0]) {
anschnitt = anschnitt+ "-oben-";
}

if (gB_innen[1] > gB_aussen[1]) {
anschnitt = anschnitt+ "-links-";
}

if (gB_innen[2] < gB_aussen[2]) {
anschnitt = anschnitt+ "-unten-";
}

if (gB_innen[3] < gB_aussen[3]) {
anschnitt = anschnitt+ "-rechts-";
}

var seitenzahl = graphics[g].parentPage.name;
_report.push(graphics[g].itemLink.name+'\t'+seitenzahl+'\t'+anschnitt);


}




//Report ausgabe////////////////////////////////////////////////////////////////////////
function cut_suffix (oneFile) {
return oneFile.replace(/\.indd$/i, '') ;
}
var myFilePath = app.activeDocument.filePath+"/" + cut_suffix(app.activeDocument.name ) + '__[angeschnittene Bilder].txt';
var myFile = new File(myFilePath);
var d = new Date;
myFile.open("w");
myFile.encoding = "UTF-8";
myFile.write("Bild\tSeite\tPosition\n"+_report.join('\r'));
myFile.close();
myFile.execute();


Ich glaube, ich komme da immer noch nicht mit der Boundingbox klar.
Weiterhin habe ich keine Idee, wie ich das mit dem Status "alles ok" am elegantesten mache.
Und was mache ich, wenn ein Bild ausserhalb der Seite steht. Also wenn es randabfallend ist?

Bitte um weitere Hilfe.
Gruss
Christoph


als Antwort auf: [#533397]

Abgeschnittene Bilder finden (CS6, WIN7)

Thomas Richard
Beiträge gesamt: 19327

24. Okt 2014, 17:42
Beitrag # 6 von 11
Beitrag ID: #533409
Bewertung:
(4200 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Nur mal so rein aus Interesse: Sollte das nicht der Normalzustand sein, ein Foto auf seinen relevanten Ausschnitt zu beschneiden ist doch Aufgabe des Bildrahmens. Oder beim gerade ausrichten, ...?


als Antwort auf: [#533388]

Abgeschnittene Bilder finden (CS6, WIN7)

cwenet
Beiträge gesamt: 1139

24. Okt 2014, 17:56
Beitrag # 7 von 11
Beitrag ID: #533410
Bewertung:
(4195 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieber Thomas,

das ist richtig. Rahmen können auch für das Maskieren von nicht gewollten Bildbereichen verwendet werden.
In meinem Workflow werden die Bilder bereits in der Bildbearbeitung passend gemacht, da ich Abbildungen generell automatisiert in das Indd-Dokument lade.
Da muss alles vorher stimmen. Vor allem auch bei EPS Schaubildern mit Text.
Wenn im Feinumbruch dann versehentlich mal ein Rahmen verkleinert wird, möchte ich mich vor der Printausgabe absichern, dass alles sichtbar ist.

Grüße
Christoph


als Antwort auf: [#533409]

Abgeschnittene Bilder finden (CS6, WIN7)

cwenet
Beiträge gesamt: 1139

25. Okt 2014, 06:50
Beitrag # 8 von 11
Beitrag ID: #533412
Bewertung:
(4090 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen schön,

habe mich nochmals durchgebissen und es scheint gut zu funktionieren:

Code
//Sicherstellen, ob das Dokument schon gespeichert wurde und somit auch einen Dateinamen besitzt.  
//Wird für die Erstellung der Raportdatei benötigt.
if(app.activeDocument.saved == false){
alert('Dokument bitte vorher speichern!', 'Hinweis','SystemStopIcon') ;
exit();
}

var doc = app.activeDocument;
var graphics = doc.allGraphics;

_report = [];



for (var g=0; g<graphics.length; g++) {

var gB_innen = graphics[g].geometricBounds;
var gB_aussen = graphics[g].parent.geometricBounds;

var anschnitt ="";

if (gB_innen[0] < gB_aussen[0]) {
anschnitt = anschnitt+"-oben-";
}

if (gB_innen[2] > gB_aussen[2]) {
anschnitt = anschnitt+"-unten-";
}

if (gB_innen[1] < gB_aussen[1]) {
anschnitt = anschnitt+"-links-";
}

if (gB_innen[3] > gB_aussen[3]) {
anschnitt = anschnitt+"-rechts-";
}

// nur wenn ein Bild angeschnitten ist, wird es gelistet
if (anschnitt !="") {
var seitenzahl = graphics[g].parentPage.name;
_report.push(graphics[g].itemLink.name+'\t'+seitenzahl+'\t'+anschnitt);
}

}



//Report ausgabe
function cut_suffix (oneFile) {
return oneFile.replace(/\.indd$/i, '') ;
}
var myFilePath = app.activeDocument.filePath+"/" + cut_suffix(app.activeDocument.name ) + '__[angeschnittene Bilder].txt';
var myFile = new File(myFilePath);
var d = new Date;
myFile.open("w");
myFile.encoding = "UTF-8";
myFile.write("Bild\tSeite\tAnschnitt\n"+_report.join('\r'));
myFile.close();
myFile.execute();


Einzig, wenn ein Bild auf der Montagefläche liegt gibt es eine Fehlermeldung.
Das kommt bei meinen Dokumenten so nicht vor.
Es funktioniert sogar bei verankerten Bildern.
Hoffe, ich habe jetzt nichts übersehen.
Eventuell muss man den Vergleich zwischen innen und aussen etwas grober einstellen.
Also eine kleine Toleranz erlauben, da die Werte schonmal viele Nachkommastellen haben können.

Schönen Tag
Christoph


als Antwort auf: [#533410]
(Dieser Beitrag wurde von cwenet am 25. Okt 2014, 06:59 geändert)

Abgeschnittene Bilder finden (CS6, WIN7)

barsch1969
Beiträge gesamt: 52

27. Okt 2014, 08:39
Beitrag # 9 von 11
Beitrag ID: #533448
Bewertung:
(3827 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christof,

ich habe es getestet, es funktioniert sehr gut.
Einzig Dein schon gemachter Hinweis mit einer Erhöhung der Toleranzgrenzen wäre noch gut, denn er findet bei mir auch Bilder, wo der Begrenzungsrahmen passt.

Gruß
Markus


als Antwort auf: [#533412]

Abgeschnittene Bilder finden (CS6, WIN7)

Hans Haesler
  
Beiträge gesamt: 5826

27. Okt 2014, 21:58
Beitrag # 10 von 11
Beitrag ID: #533469
Bewertung:
(3726 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

ja, die Werte können viele Nachkommastellen haben. Aber auch wenn diese bis zu vierzehn Ziffern exakt übereinstimmen, kommt es öfters vor, dass dennoch ein Unterschied festgestellt wird. Vielleicht weil intern noch mehr Ziffern verwendet werden.

Eine mögliche Lösung: Die Werte auf drei Nachkommastellen runden:

Code
// prüfen, ob ein Dokument geöffnet ist 
if (app.documents.length == 0) {
alert("Bitte ein Dokument öffnen.", "Hinweis", "SystemStopIcon");
exit();
}

// sicherstellen, dass das Dokument schon gespeichert wurde
// und somit auch mit einem Dateinamen versehen ist
// (wird für die Erstellung der Rapportdatei benötigt)
if (app.activeDocument.saved == false) {
alert("Dokument bitte vorher speichern!", "Hinweis", "SystemStopIcon");
exit();
}

var doc = app.activeDocument;
var graphics = doc.allGraphics;

_report = new Array();

for (var g=0; g<graphics.length; g++) {

var gB_innen = graphics[g].geometricBounds;
var gi0 = Math.floor((gB_innen[0]*1000)+0.5)/1000;
var gi1 = Math.floor((gB_innen[1]*1000)+0.5)/1000;
var gi2 = Math.floor((gB_innen[2]*1000)+0.5)/1000;
var gi3 = Math.floor((gB_innen[3]*1000)+0.5)/1000;

var gB_aussen = graphics[g].parent.geometricBounds;
var ga0 = Math.floor((gB_aussen[0]*1000)+0.5)/1000;
var ga1 = Math.floor((gB_aussen[1]*1000)+0.5)/1000;
var ga2 = Math.floor((gB_aussen[2]*1000)+0.5)/1000;
var ga3 = Math.floor((gB_aussen[3]*1000)+0.5)/1000;

var anschnitt = new Array();

if (gi0 < ga0) {
anschnitt.push("oben");
}
if (gi1 < ga1) {
anschnitt.push("links");
}
if (gi2 > ga2) {
anschnitt.push("unten");
}
if (gi3 > ga3) {
anschnitt.push("rechts");
}

// nur wenn ein Bild angeschnitten ist, wird es gelistet
if (anschnitt.length != 0) {
var anschnittString = "- " + anschnitt.join(" + ") + " -";
try {
var seitenZahl = graphics[g].parentPage.name;
}
catch (e) {
var seitenZahl = "MF";
}
_report.push(graphics[g].itemLink.name + "\t" + seitenZahl + "\t" + anschnittString);
}
}

// Report-Ausgabe
if (_report.length > 0) {
var myFilePath = app.activeDocument.filePath + "/" + cut_suffix(app.activeDocument.name) + "_[angeschnittene Bilder].txt";
var myFile = new File(myFilePath);
myFile.open("w");
myFile.encoding = "UTF-8";
myFile.write("Bild\tSeite\tAnschnitt\n"+_report.join("\r"));
myFile.close();
myFile.execute();
}
else {
alert ("Alles okay.", "Nichts angeschnitten");
}

function cut_suffix(oneFile) {
return oneFile.replace(/\.indd$/i, '') ;
}

Eine Fehlermeldung vermeiden, wenn ein Bildrahmen ausserhalb der Seite liegt? Das ist hier so gelöst: Ein 'try'-Wickel eingefügt und bei Bedarf im 'catch()'-Bereich der Variablen 'seitenZahl' den Kürzel "MF" (= Montagefläche) zuweisen.

Gruss, Hans


als Antwort auf: [#533412]

Abgeschnittene Bilder finden (CS6, WIN7)

cwenet
Beiträge gesamt: 1139

28. Okt 2014, 10:05
Beitrag # 11 von 11
Beitrag ID: #533479
Bewertung:
(3664 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Besten Dank Lieber Hans,

für die angepasste Scriptversion (viel schöner ausgearbeitet) und auch für den Hinweis für evtl. versteckte Nachkommastellen.
Da wäre ich nie drauf gekommen und wahrscheinlich verzweifelt.

Einen schönen Tag
Christoph


als Antwort auf: [#533469]
X