UFRaw + Hugin = batch converter +HDR (Win)

Plug-ins, add-ons, skins, icons, templates and other downloads. Contributions are welcome.

Moderators: XnTriq, helmut, xnview

barmale
Posts: 1
Joined: Mon Aug 29, 2011 5:38 am

UFRaw + Hugin = batch converter +HDR (Win)

Postby barmale » Mon Aug 29, 2011 6:32 am

MS-Windows
Script makes batch convert *.ufraw files
Also can makes HDR image from RAW file. Don't need use "Auto Bracketing" and shoot 3 times by camera.
*************************
Usage:
Create UFRaw ID file instead jpg (UFRaw - Save settings - Create ID file = Only) with preffered settings (Crop, rotate, wite balance, etc.).
1. Run script by drag and drop any file from directory with UFRaw id files (*.ufraw)
2. Register script in XnView - Tools - Options - New Interface command. You can run it by selecting any file in XnView and clicking button. My choise :)
*************************
Dependencies:
UFRaw (ufraw-batch.exe)
Hugin (enfuse.exe)
*************************
Customisation:
Change EXP_VAL for HDR dark and light images. "Auto Bracketing"
*************************
HDR_batch.vbs

Code: Select all

' First argument is any file path. Used only directory path
' Be free on change :)
' (C) XnView user
const UFRAW_S = "C:\Program Files\GIMP-2.0\bin\ufraw-batch.exe"
const ENFUSE = "C:\Program Files\Hugin\bin\enfuse.exe"
const EXP_VAL = 1

Dim objFSO
Dim oShell

call Main

Sub Main
   Dim objFolder, objFile
   Dim imagePath, imFolder
   'Check script arguments
   if WScript.Arguments.Count = 0 then
      WScript.Echo "Specify path!"
      exit sub
   end if
   Set oShell = CreateObject("WScript.Shell")
   set objFSO = CreateObject("Scripting.FileSystemObject")
   'Extract current script directory (used as TMP folder)
   oShell.CurrentDirectory = objFSO.GetParentFolderName(Wscript.ScriptFullName)
   imagePath = WScript.Arguments.Item(0)
   Set objFile = objFSO.GetFile(imagePath)
   'Extract directory path
   imFolder = objFSO.GetParentFolderName(objFile)
   'Ask user
   Dim MyVar
   MyVar = MsgBox ("All Images will be rewrited!!"& Chr(13) & "Yes - create normal and HDR images." & Chr(13) & "No - Only normal Images." & Chr(13) & "Cancel?", 3, "Batch HDR UFRaw converter!")
   if MyVar=2 then
      Exit Sub
   End If
   If MyVar=6 then
      ProcessFilesHDR(imFolder)
   else
      ProcessFiles(imFolder)
   End If
   
End Sub

'Create 3 images with different exposure and process them as HDR
Sub CreateHDRImage (ByVal sPath, ByVal sFile)
   Dim outFile
   outFile = sPath & "\" & sFile & ".jpg"   
   idFile =  sPath & "\" & sFile & ".ufraw"
   'Create default (0.jpg) image based on user settings
   Run("""" & UFRAW_S & """ --create-id=also --out-type=jpeg --output=0.jpg """ & idFile & """")
   'Create 2 (1.ufraw and 2.ufraw) ID files with different exp. values (see EXP_VAL const)
   if ChangeExposure("0.ufraw") then
      Run("""" & UFRAW_S & """ --out-type=jpeg --output=1.jpg 1.ufraw")
      Run("""" & UFRAW_S & """ --out-type=jpeg --output=2.jpg 2.ufraw")
   else
      'If "UFRaw/Exposure" node not found, used command line parameters
      Run("""" & UFRAW_S & """ --out-type=jpeg --exposure=-" & EXP_VAL & " --output=1.jpg 0.ufraw")
      Run("""" & UFRAW_S & """ --out-type=jpeg --exposure=" & EXP_VAL & " --output=2.jpg 0.ufraw")
   end if
   'Run "enfuse.exe" from Hugin project
   Run("""" & ENFUSE & """ --output=""" & sPath & "\" & sFile & "_HDR.jpg"" 0.jpg 1.jpg 2.jpg")
   'Copy and rename file created with user parameters
   'Comment next if case, if you want only HDR image
   If not objFSO.FileExists(outFile) Then
      objFSO.MoveFile "0.jpg", outFile
   End If
   'Delete TMP files
   Del("1.jpg")
   Del("2.jpg")
   Del("0.ufraw")
   Del("1.ufraw")
   Del("2.ufraw")
   'Delete UFRaw ID file
   Del(idFile)
End Sub


'Load UFRaw ID file as XML and change node value
Function ChangeExposure(ByVal sFile)
   Dim expValue
   
   Set objXMLDoc = CreateObject("Microsoft.XMLDOM")
   objXMLDoc.async = False
   objXMLDoc.load(sFile)
   
   For Each node in objXMLDoc.selectNodes("UFRaw/Exposure")
      expValue = CDbl(node.text)
      node.text = expValue+EXP_VAL
      objXMLDoc.save("1.ufraw")
      node.text = expValue-EXP_VAL
      objXMLDoc.save("2.ufraw")
      ChangeExposure = true
      exit Function
   Next
   ChangeExposure = false

End Function

'Create one image with user parameters
Sub CreateImage (ByVal sPath, ByVal sFile)
   Dim outFile
   outFile = sPath & "\" & sFile & ".jpg"
   outFile =  """" & outFile & """"
   idFile =  sPath & "\" & sFile & ".ufraw"   
   Run("""" & UFRAW_S & """ --out-type=jpeg --overwrite --output=" & outFile & " """ & idFile & """")
   Del(idFile)
End Sub

'Process all *.ufraw files in directory
Sub ProcessFilesHDR(ByVal sFolder)
   Set objFolder = objFSO.GetFolder(sFolder)
   For Each objFile In objFolder.Files
      if StrComp(LCase(objFSO.GetExtensionName(objFile)),"ufraw") = 0 then
         CreateHDRImage objFSO.GetParentFolderName(objFile), objFSO.GetBaseName(objFile)
      end if
   Next
End Sub

'Process all *.ufraw files in directory
Sub ProcessFiles(ByVal sFolder)
   Set objFolder = objFSO.GetFolder(sFolder)
   For Each objFile In objFolder.Files
      if StrComp(LCase(objFSO.GetExtensionName(objFile)),"ufraw") = 0 then
         CreateImage objFSO.GetParentFolderName(objFile), objFSO.GetBaseName(objFile)
      end if
   Next
End Sub

Sub Run(ByVal sFile)
   Dim shell      
   Set shell = CreateObject("WScript.Shell")
    shell.Run sFile, 1, true
    Set shell = Nothing
End Sub

Sub Del(ByVal sFile)
   If objFSO.FileExists(sFile) Then
      objFSO.DeleteFile sFile
      End If
end sub

Return to “Customization”

Who is online

Users browsing this forum: No registered users and 1 guest