VBScript и imagemagick ошибка изменения размера



Я пытаюсь размер каждой подпапки первого JPG и поместить его в новую папку



Dim strFolderPath,objFSO
strDirectory= "D:images"
Set objFSO = CreateObject("Scripting.FileSystemObject")

Dim objFolder, objSubFolder,folderCur
Set objFolder = objFSO.GetFolder(strDirectory)

Dim imageMagick
Set imageMagick = CreateObject("ImageMagickObject.MagickImage.1")


If objFolder.SubFolders.Count > 0 Then
For Each objSubFolder in objFolder.SubFolders



'Now check if the folder contains any files.
If objSubFolder.Files.Count > 0 Then
folderCur = objSubFolder & "_small320"
For each JpgFile in objSubFolder.Files
WScript.Echo "Checking Folder: " & folderCur & "" & JpgFile.name & vbcrlf & " File: " & JpgFile

if not objFSO.folderexists(folderCur) then objFSO.createfolder folderCur
'imageMagick.Exec("convert " & JpgFile & " -resize 320x210 " & JpgFile.name)
imageMagick.Convert JpgFile, "-resize", "320x210", folderCur & "preview.jpg"
exit for
next
End If
Next
End If


Но я получаю ошибку на imageMagick.Convert JpgFile, "-resize", "320x210", folderCur & "preview.jpg"



Введите описание изображения здесь



Что плохого в синтаксисе?



Также получаем эту ошибку



Введите описание изображения здесь



Но все библиотеки DLL существуют в папке

438   1  

1 ответ:

Не проверено (нет ImageMagick под рукой), но, вероятно,

imageMagick.Convert JpgFile.Path, "-resize", "320x210", folderCur & "preview.jpg"

Включил полный путь к файлу и удалил дополнительную обратную косую черту в выходном файле (которая была включена в имя папки).

Отредактировано Теперь проверено и работает. Этот код обрабатывает вложенные папки папки, в которой находится скрипт.

Option Explicit

Const OUTPUT_FOLDER_NAME = "_small320"

Dim fso
    Set fso = WScript.CreateObject("Scripting.FileSystemObject")

Dim strScriptFolder    
    strScriptFolder = fso.GetFile( WScript.ScriptFullName ).ParentFolder.Path

Dim rootFolder
    Set rootFolder = fso.GetFolder( strScriptFolder )

Dim imageMagick
    Set imageMagick = WScript.CreateObject("ImageMagickObject.MagickImage.1")

Dim inputFolder, inputFile, strOutputFolder
    For Each inputFolder In rootFolder.SubFolders
        If inputFolder.Name <> OUTPUT_FOLDER_NAME Then 
            strOutputFolder = fso.BuildPath(inputFolder.Path, OUTPUT_FOLDER_NAME)
            If Not fso.FolderExists(strOutputFolder) Then 
                fso.CreateFolder strOutputFolder
            End If 
            For Each inputFile In inputFolder.Files
                Select Case LCase(fso.GetExtensionName(inputFile.Path))
                    Case "jpg", "jpeg", "png"
                        WScript.Echo "[ convert ] " & inputFile.Path
                        imageMagick.Convert inputFile.Path, _ 
                                            "-resize", _ 
                                            "320x210", _ 
                                            fso.BuildPath(strOutputFolder, inputFile.Name)
                    Case Else
                        WScript.Echo "[ skip    ] " & inputFile.Path
                End Select 
            Next 
        End If
    Next 

Исходная ошибка, о которой идет речь (Unsupported argument type), была сгенерирована, когда в качестве аргумента был передан объект File, а не строка с путем к файлу.

В Unable to load module - это ошибка ImageMagick, а не ошибка программирования. Возможно, переменная path неверна и модули не могут быть найдены или это ошибка установки. Предыдущий код был протестирован (и работает) с новой установкой ImageMagick-6.9.1-6-Q16-x64-dll.exe.

Comments

    Ничего не найдено.