Was geht noch ausser FF_SaveImage?

O.S.

Mitglied
Registriert
06.08.04
Beiträge
1.046
Ort
Berlin
Ich habe gerade mein erstes kleines Skript zur Erzeugung von Gradationsmesskurven geschrieben. Dazu eine Frage:

In diesem Skritp setzte ich mit FF_SetPixel Punkte, die ich dann am Ende mit FF_SaveImage in ein neues Bild abspeichere. Leider hat das neue Bild genau die Größe des aktuellen. :'(

Was ich dagegen gern hätte:
Nur einen durch B und H bestimmten Bereich als Bild zu speichern oder alternativ diesen Bereich direkt in die Hilfsansicht zu pushen. Ist das möglich?

Welche Funktion soll ich nehmen?

Gruß
Olaf

So ist es zur Zeit:


So soll es aussehen:
 
AW: Was geht noch ausser FF_SaveImage?

Hallo Olaf,

Hilfsansicht wird wahrscheinlich nicht gehen, da pro Scripting ein Undo erzeugt wird, nicht mal mit FF_PushImage und FF_SwapImage
Was geht:

Zuschneiden geht mit FF_Crop

Anleitung und Befehlsreferenz dazu in der FF-Hilfe.
Separat gestartet kann sie neben FF angezeigt werden und FF reagiert trotzdem weiter.

Ich habe auf die Script-Befehlsseite einen Favoriten gelegt, damit ich schneller hinfinde.

Schönen Gruß,
Werner.
 
AW: Was geht noch ausser FF_SaveImage?

Sowas wollte ich! :D
Danke Werner! Da kann man ja schnell zum Skripting-Fan werden!
Gruß
Olaf

P.S.: Mmmh. wenn man jetzt noch die Hilfsansicht manipulieren könnte...
 
AW: Was geht noch ausser FF_SaveImage?

Hallo Olaf,

warum machst Du nicht ein FF_PushImage und bastelst Dir mit den FF_Dialogen nicht selbst eine Hilfsansicht?
Wenn Du die Dein Diagramm zuschneidest und abspeicherst, kann es jederzeit weiter verwertet werden.
Wenn Du nicht abspeicherst, kannst Du im Dialog auch über den ImageStack Diagramm und Bild (1:1 geht leider nicht) gleichzeitig anzeigen.

Auch kannst Du ein Bild erweitern und danach wieder abschneiden um zu automatisieren, alles möglich.

Willst Du das Diagramm unabhängig vom Skript anzeigen, hilft eine Verpackung als HTML-Ansicht und mit dem Run-Befehl von WScript.Shell (WSH-Hilfe, die es auch in deutsch gibt) eine unabhängige Anzeige des Diagramms. Soll es Interaktiv werden, wird's allerdings kompliziert.

Schönen Gruß,
Werner
 
AW: Was geht noch ausser FF_SaveImage?

Hallo Werner,
W.P. schrieb:
warum machst Du nicht ein FF_PushImage und bastelst Dir mit den FF_Dialogen nicht selbst eine Hilfsansicht?
Wow, sowas geht!? 8-)
Wenn Du die Dein Diagramm zuschneidest und abspeicherst, kann es jederzeit weiter verwertet werden.
Wenn Du nicht abspeicherst, kannst Du im Dialog auch über den ImageStack Diagramm ....
...ich sehe schon, da braucht man dann langsam richtig Zeit und Muße... ;)

Eigentlich war ich ja nur fasziniert von der Idee, die Gradationskurven im Bild messen zu können, so dass ich mich spontan mal an ein Skript gewagt habe. Aber danke dir!
Gruß Olaf
 
AW: Was geht noch ausser FF_SaveImage?

Hallo Olaf,

noch etwas zum Handling.
Für das Messen würde doch eine 1-4 Pixel (Grau/Farbkurven) Breite Linie mit Verlauf ausreichen, oder?
Dann würde ich so vorgehen:
  • Das Bild um diese 1 - 4 Pixel erweitern.
  • In den erweiterten Bereich Deinen Verlauf einbauen.
  • Mit den Bild was auch immer anstellen.
  • Das Bild auf den ImageStack mit PushImage legen
  • Den angeklatschten Verlauf auf Deine Auswertungsbreite und Höhe zuschneiden
  • Das Bild wieder erweitern um den Bereich, den Du brauchst, um das Diagramm darzustellen
  • Den Diagrammbereich mit Gittern hinterlegen und dann das Diagramm aufbauen, dabei den Grau/Farbstufen-Streifen zur Ansicht mit unten Kleben lassen.
  • Diagramm speichern (oder nicht)
  • Den Stack umdrehen mit FF_SwapImage
  • Den Farbstreifen vom Bild wieder wegschneiden
  • Bild speichern (oder nicht)
  • Beides in einem Dialog darstellen.

Ein Problem sehe ich bei dem Einfügen Eines Grau/Farbstufenkeils. Du verhinderst die Kontrastspreizung, insbesondere bei Automatiktools. Du müsstest also vorher den weissesten Punkt und den schwärzesten Punkt ermitteln.
Beim Aufbau Deines Farb/Graustufenkeils müssen Bereiche, die Dunkler sind, dem dunkelsten Punkt entsprechen und die, die heller sind dem hellsten des Bildes. Sonst gibt es Veränderungen im Bild, die so beim normalen Bearbeiten nicht auftreten. Auch die Reste des angefügten Streifens muss mit der hellsten oder dunkelsten auftretenden Bildfarbe ausgefüllt werden, nicht mit weiß oder schwarz.

Schönen Gruß,
Werner.
 
AW: Was geht noch ausser FF_SaveImage?

Hallo Werner,
W.P. schrieb:
Für das Messen würde doch eine 1-4 Pixel (Grau/Farbkurven) Breite Linie mit Verlauf ausreichen, oder?
...sofern du nicht weichzeichnest, eine Schärfung vornimmst oder sonstwie benachbarte Pixel beeinflusst... Bei LCE werden z.B. mehrere dutzend benachbarte Pixel verändert...
Ein Problem sehe ich bei dem Einfügen Eines Grau/Farbstufenkeils. Du verhinderst die Kontrastspreizung, insbesondere bei Automatiktools. Du müsstest also vorher den weissesten Punkt und den schwärzesten Punkt ermitteln.
Na gut. Aber ich nehme eh immer die Kontrastautomatik. Da sieht man bei eingeschalteter BÜA ja, was drin ist und was draußen. Die Methode erhebt ja nicht den Anspruch, perfekt zu sein!

Perfekt wäre die Messung erst dann, wenn Joachim einen Messstreifen versteckt im Hauptspeicher mitlaufen ließe, auf den man per Skript dann zugreifen kann....

Gruß
Olaf

P.S.: Du hast so schön beschrieben, wie du das Skript verbessern würdest... Machst du das? ;D
 
AW: Was geht noch ausser FF_SaveImage?

O.S. schrieb:
...
P.S.: Du hast so schön beschrieben, wie du das Skript verbessern würdest... Machst du das? ;D
Nein, zwei andere Projekte fressen meine Freizeit auf.

Wollte nur Hilfestellung für "Anfänger" geben.

Schönen Gruß,
Werner.
 
AW: Was geht noch ausser FF_SaveImage?

Hallo,

ich habe ich kleines Verständnisproblem zu oben geschriebenen und möchte noch gleichzeitig um andere Fragen ergänzen:

---Zitat:
---Das Bild auf den ImageStack mit PushImage legen
---Den Stack umdrehen mit FF_SwapImage

Kann man beliebig viele Bilder auf den Stack legen? Wird der Arbeitsspeicher damit stark beansprucht?

---FF_SwapImage()
---Tauscht das geladene Bild gegen das obere Bild im Stack aus

Wäre für mich eindeutig. Wenn ich aber das an zweitoberster Stelle auf dem Stack liegende Bild haben möchten - dann muß ich den Umweg über die Zwischenspeicherung auf Festplatte machen?

Ist dies dann die einzige Möglichkeit, den Stack wieder abzubauen?

---FF_PopImage()
---Ersetzt das aktuelle Bild durch das letzte Exemplar vom Stack

Wird nur eine Kopie vom letzten Bild auf dem Stack gemacht, oder wird es mit dieser Funktion vom Stack wieder entfernt? Das würde meine Frage zum Abbau des Stacks beantworten.


---FF_Reload()
---Das Bild im Speicher wird in die FF-Arbeitsfläche übernommen.

Hä? Hat mit dem Stack erstmal nichts zu tun - oder? In welchem Speicher denn? Ich denke das Bild auf der Arbeitsfläche IST DAS, welches sich im Speicher befindet. (?) Oder entspricht diese Funktion dem REDO sämtlicher Bearbeitungsschritte, so daß das Bild wieder wie im 'frisch-von-der-Platte-geladenen' Zustand ist?

Und da wir gerade dabei sind: Wenn ich VBS-Scipte bevorzuge, weil für am leichtesten zu verstehen, verbaue ich mir da eventuell Möglichkeiten, die ich mit Java-Scripten noch zuätzlich hätte?

Danke und viele Grüße
Walter
 
Zuletzt bearbeitet:
AW: Was geht noch ausser FF_SaveImage?

Hallo,

ich habe ich kleines Verständnisproblem zu oben geschriebenen:

---Zitat:
---Das Bild auf den ImageStack mit PushImage legen
---Den Stack umdrehen mit FF_SwapImage

Kann man beliebig viele Bilder auf den Stack legen? Wird der Arbeitsspeicher damit stark beansprucht?
Die Frage stellt sich eigentlich gar nicht. Warum sollte man Bilder in gösseren Mengen stacken? Der Stack ist als schneller Arbeitsspeicher gedacht. Gut zu wissen, aber für den Anfang würde ich mich mit dem Stack nicht verzetteln ohne zwingenden Grund.
Vom Speicheraufwand her muß man sich jedoch keine Gedanken machen, wenn es sich nur um ein paar Bilder handelt.

---FF_SwapImage()
---Tauscht das geladene Bild gegen das obere Bild im Stack aus

Wäre für mich eindeutig. Wenn ich aber das an zweitoberster Stelle auf dem Stack liegende Bild haben möchten - dann muß ich den Umweg über die Zwischenspeicherung auf Festplatte machen?
Das liegt im Wesen eines Stacks - obendrauf stapeln und da auch in umgekehrter Reihenfolge wieder abholen.

Ist dies dann die einzige Möglichkeit, den Stack wieder abzubauen?

---FF_PopImage()
---Ersetzt das aktuelle Bild durch das letzte Exemplar vom Stack

Wird nur eine Kopie vom letzten Bild auf dem Stack gemacht, oder wird es mit dieser Funktion vom Stack wieder entfernt? Das würde meine Frage zum Abbau des Stacks beantworten.
Damit wird es vom Stack entfernt.

---FF_Reload()
---Das Bild im Speicher wird in die FF-Arbeitsfläche übernommen.

Hä? Hat mit dem Stack erstmal nichts zu tun - oder? In welchem Speicher denn? Ich denke das Bild auf der Arbeitsfläche IST DAS, welches sich im Speicher befindet. (?) Oder entspricht diese Funktion dem REDO sämtlicher Bearbeitungsschritte, so daß das Bild wieder wie im 'frisch-von-der-Platte-geladenen' Zustand ist?
Etwas verwirrend. Mit Load_Image wird eine Bilddatei nur in den Speicher geladen - das kann das Bild auf der Arbeitsfläche sein oder ein ganz anderes. Alle darauf angewendeten FF_Calls finden sozusagen im Hinterzimmer am explizit geladenen Bild statt. Mit FF_Reload wird es bei Bedarf auf die Arbeitsfläche gebracht.

Und da wir gerade dabei sind: Wenn ich VBS-Scipte bevorzuge, weil für am leichtesten zu verstehen, verbaue ich mir da eventuell Möglichkeiten, die ich mit Java-Scripten noch zuätzlich hätte?
Umgekehrt. Javascript hat ein paar Stärken, VBScript ist aber insgesamt leistungsfähiger. MS hasst alles, was mit Java... anfängt :)
 
Zuletzt bearbeitet:
AW: Was geht noch ausser FF_SaveImage?

Hallo Jochen,

danke für die ausführliche Antwort. Dann liege ich mit VBScript ja gar nicht so verkehrt. Werd mich mal an die Analyse Eurer fertigen Scripts machen, damit lernt man am schnellsten. Mein FBIDE beherrscht das Syntax-Highlighting des VBS-Befehlsschatzes scheinbar ganz gut, nur das Einpflegen der FF-Funktionen klappt noch nicht. Oder welchen Editor nehmt Ihr dafür?

LG
Walter
 
Zurück
Oben