PerfectlyClear in vorh. Skript einbinden

daralla

Mitglied
Registriert
11.10.09
Beiträge
3
Hallo,

bin neu hier, mit einer Anfängerfrage, die hoffentlich für die Pros kein Problem darstellt ;).

Kurze Vorgeschichte: ich benutze Fixfoto nicht selbst, sondern helfe nur einem befreundeten Fotografen aus der es einsetzt. Es sind versch. Skripte vorhanden, der Mitarbeiter der sie original erstellt hat jedoch nicht mehr :(. Ich konnte schon vorher einmal helfen, da ging es aber nur um die Anpassung von Pfaden und Dateinamen.

Jetzt hat der Fotograf die neue Version 3.0 inkl. PerfectlyClear erworben und möchte letzteres gern in ein vorh. Skript eingebunden haben, und daß kriege ich mit quasi 0 vbs-Kenntnissen nicht mehr hin.

Hier das original Skript:

Code:
Function Speicherkarte()
   fenster = 1
   If (fso.FolderExists("i:\dcim")) Then

   Else
      fenster = Msgbox("Bitte stellen Sie sicher das sich die SD Card korrekt im Kartenlesegerät befindet und drücken Sie anschließend auf OK !",69,"Hinweis SD Speicherkarte")
      if fenster = 4 Then
      Speicherkarte()
      Else
      End If
   End If
End Function 

Function Dateienkopieren()
   Dim f, f1, s, sf
   Set f = fso.GetFolder("i:\dcim")
   Set sf = f.SubFolders
   For Each f1 in sf
      fso.CopyFile "i:\dcim\" & f1.name & "\*.*", "C:\Fixfoto-Bilder\WB\Output\"
   Next
End Function

Function Bildbearbeiten(name)
   dim rahmen, text
   dim color, i
   dim fso, path, dir, file, ext
   dim praefix, suffix
   dim amax, bmax, a, b
   dim xmax, ymax, x, y
   dim rot
   dim dpi
   dim info
   dim imagenum
   dpi     = 300
   amax    = 1728
   a       = 1670
   bmax    = 1248
   b       = 1080 
   color   = 255 
   qjpeg   = 98
   
   rahmen = "c:\rahmen\gruppen4.tif"
   text = ""
   call FF_LoadImage("C:\Fixfoto-Bilder\WB\Output\" & name)

     if FF_GetImageHeight > FF_GetImageWidth then
    xmax = bmax
    x    = b
    ymax = amax
    y    = a
    suffix  = "_10x15"
  else
    xmax = amax
    x    = a
    ymax = bmax
    y    = b
    suffix  = "_15x10"
  end if  

   'call FF_HQScale(x,y,true)
   'call FF_ExtendCanvas(0,0,0,78,color,color,color)
   'call FF_ExtendCanvas(0,(xmax - FF_GetImageWidth),0,(ymax - FF_GetImageHeight),color,color,color)
   call FF_SetDPI(300)
   call FF_PushImage()
   call FF_LoadImage(rahmen)
   call FF_SwapImage()
   call FF_LogoMix(text,100,0,0,100,0,16777215,1,0)
   call FF_SaveImage("C:\Fixfoto-Bilder\WB\Output\" & name,100)
   schritt2 = schritt + schritt2
   call FF_SetProgress(schritt2,100)
End Function

Function Bilderzaehlen()
   Dim f, fc , f1, s
   Set f = fso.GetFolder("C:\Fixfoto-Bilder\WB\Output\")
   Set fc = f.Files
   For Each f1 in fc
       anzahl = anzahl + 1
   Next
   schritt = 100 / anzahl
   call FF_SetProgress(schritt,100)
End Function

Function Bilderoeffnen()
   Dim f, fc, f1, s
   Set f = fso.GetFolder("C:\Fixfoto-Bilder\WB\Output\")
   Set fc = f.Files
   For Each f1 in fc
       Bildbearbeiten(f1.name)
   Next

End Function


   Dim fso, ordner, s, anzahl, schritt, schritt2, fenster, stime
   anzahl = 0
   schritt2 = 0
   Set fso = CreateObject("Scripting.FileSystemObject")
   fenster = msgbox("Achtung sind Sie sicher, dass Sie die Bilder der letzten SD Card belichtet haben? Wenn nicht wählen Sie Abbrechen, da ansonsten die Bilder verloren gehen. Ansonsten starten Sie das Script mit OK",65,"Achtung")
   if fenster = 1 Then
   Speicherkarte()
   Else
   End If
   stime = hour(now) & "-" & minute(now) & "-" & second(now)
   if fenster = 1 Then
   'fso.DeleteFolder ("C:\Fixfoto\Output\")'
   'fso.CreateFolder ("C:\Fixfoto\Output\")'
   fso.DeleteFile("C:\Fixfoto-Bilder\WB\Output\*.*")

	If (fso.FolderExists("C:\Fixfoto-Bilder\WB\final\" & date & "\")) Then
	fso.CreateFolder ("C:\Fixfoto-Bilder\WB\final\" & date & "\" & stime & "\")
	Else
	fso.CreateFolder ("C:\Fixfoto-Bilder\WB\final\" & date & "\")
	fso.CreateFolder ("C:\Fixfoto-Bilder\WB\final\" & date & "\" & stime & "\")
	End If

   Dateienkopieren()
   Bilderzaehlen()
   Bilderoeffnen()

   fso.CopyFile "C:\Fixfoto-Bilder\WB\Output\*.*", "C:\Fixfoto-Bilder\WB\final\" & date & "\" & stime & "\"
      
   fenster = msgbox("Alle Bilder der Speicherkarte wurden erfolgreich übertragen und bearbeitet.")
   Else
   fenster = msgbox("Das Script wurde abgebrochen!",48,"Scriptabbruch")
 End If

Das Skript kopiert also *.jpg Dateien vom Kartenleser, passt die Größe an, fügt einen Rahmen hinzu und kopiert das Ergebnis dann in einen weiteren Ordner.

Das Ziel wäre jetzt, vor allen anderen Bearbeitungsschritten die PerfectlyClear Optimierung zu integrieren. Ich habe schon die Funktion "FF_PerfectlyClear16" entdeckt, aber meine amateurhaften Versuch endeten immer mit der Fehlermeldung "kein Bild geladen" der Funktion.

Also ist die eigentliche Frage, wie lade ich alle vom Kartenleser auf die HD kopierten Bilder für die Bearbeitung mittels "FF_PerfectlyClear16" Funktion, idealerweise als ersten Bearbeitungsschritt im obigen Skript (also bevor Rahmen und Größenanpassung).

Bin für alle Hinweise dankbar!
 
AW: PerfectlyClear in vorh. Skript einbinden

Du must FF_PerfectlyClear verwenden bei 8-Bit Jpg Bildern.
 
AW: PerfectlyClear in vorh. Skript einbinden

:D

Perfect! Und so schnell, unglaublich!

Da soll man nun drauf kommen, bei der Fehlermeldung "kein Bild geladen"....

Habe einfach den Befehl an folgende Stelle im obigen Skript eingefügt

Code:
...  
  'call FF_ExtendCanvas(0,(xmax - FF_GetImageWidth),0,(ymax - FF_GetImageHeight),color,color,color)
   [COLOR="Red"]call FF_PerfectlyClear(true, true, 2, true, 95, true, 100, true, 100, true)[/COLOR]
   call FF_SetDPI(300)
...

und schon läuft es - vielen herzlichen Dank!
 
AW: PerfectlyClear in vorh. Skript einbinden

Ich wurde es vor der Bilderweiterung (FF_ExtendCanvas) machen.
Sonst wird der farbige Rand mit in die Optimierung mit einbezogen.

PS:
Die Fehlermeldung will dir sagen "kein 16 Bit Bild geladen".
Vieleicht kann Joachim das ja mal anpassen.
 
AW: PerfectlyClear in vorh. Skript einbinden

Die FF_ExtendCanvas Funktion ist sowieso mit ' auskommentiert und wird gar nicht ausgeführt.

Keine Ahnung was da mal ablief, wie gesagt, es sind nicht meine Skripte und ich möchte sowenig
wie möglich ändern. Hat ja auch dank Deiner Hilfe prima geklappt, PerfectlyClear ließ sich letztlich mit einer einzigen Zeile zusätzlichem Code einbinden - ich hatte wesentlich Schlimmeres befürchtet ;)
 
Zurück
Oben