2017-01-26 10 views
1

Я пытаюсь создать сценарий, уменьшающий размер изображений в папке. Но у меня всегда есть сообщение об ошибке. Я должен уменьшить размер в той же папке и вложенных папкахPowerShell - Уменьшает размер изображений

Помогите мне построить мой скрипт, пожалуйста?

Заранее спасибо.

Вот сценарий:

$source = "U:\TEST\Compression\images" 
$exclude_list = "(Imprimerie|Photos)" 

$source_listephotos = Get-ChildItem $source -Recurse | where {$_.FullName -notmatch $exclude_list} 

foreach ($source_photos in $source_listephotos) { 

$source_photos 

Resize-Image -InputFile $source_photos.FullName -Scale 30 -OutputFile (Join-Path $source $source_photos.Name) -Verbose 

} 

А вот сообщение об ошибке:

Exception calling "Save" with "1" argument(s): "A generic error occurred in GDI+." 
At C:\windows\system32\windowspowershell\v1.0\Modules\Resize-Image\Resize-Image.psm1:70 char:9 
+   $img2.Save($OutputFile); 
+   ~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
    + FullyQualifiedErrorId : ExternalException 

ответ

1

Вы используете (я предполагаю) Resize-Image модуль.

Сообщаемая проблема заключается в том, что формат файла пути не поддерживается.

Без дополнительных данных я предполагаю, что вы передаете полный объект в OutputFile. Чтобы исправить это, попробуйте указать свойство Name.

$source = "U:\TEST\Compression\images" 
$destination = "U:\TEST\Compression\image_resizer" 
$exclude_list = @("*Imprimerie","*Photos*") 

$source_listephotos = Get-ChildItem $source -Exclude $exclude_list -Recurse 

foreach ($source_photos in $source_listephotos) { 
    Resize-Image -InputFile $source_photos.FullName -Scale 30 -OutputFile (Join-Path $destination $source_photos.Name) -Verbose 
} 

Как уже упоминалось в другом ответе, следует также изменить InputFile.

+0

Благодарим за помощь. Могу ли я уменьшить размер изображения .png? Модификация скрипта изменяет расширение изображения. – pcarrey

+0

Извините, это я, я ошибся в $ source. – pcarrey

+0

У меня другая проблема. Я должен исключить некоторые папки с фотографиями, но параметр -exclude не работает. Как я могу сделать ? – pcarrey

0

Использование $ source_photos.fullname т.е.

... Resize-Image -InputFile $($source_photos.fullname) -Scale .... 
+0

Благодарим вас за ответ – pcarrey

Смежные вопросы