|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - поправить скрипт перекодирования изображений |
|
PowerShell - поправить скрипт перекодирования изображений
|
Старожил Сообщения: 286 |
Профиль | Отправить PM | Цитировать
Добрый.
Использую такой скрипт: Get-ChildItem -Path "E:\tmp\*" -include *.jpg, *jpg*.*, *.png, *png*.*, *.jpeg, *jpeg*.*, *.webp, *webp*.* -Recurse | foreach-object { $Source = $_.FullName $test = [System.IO.Path]::GetDirectoryName($source) $base= $_.BaseName+".jpg" $basedir = $test+"\"+$base Write-Host $basedir Add-Type -AssemblyName system.drawing $imageFormat = "System.Drawing.Imaging.ImageFormat" -as [type] $image = [drawing.image]::FromFile($Source) # Create a new image $NewImage = [System.Drawing.Bitmap]::new($Image.Width,$Image.Height) $NewImage.SetResolution($Image.HorizontalResolution,$Image.VerticalResolution) # Add graphics based on the new image $Graphics = [System.Drawing.Graphics]::FromImage($NewImage) $Graphics.Clear([System.Drawing.Color]::White) # Set the color to white $Graphics.DrawImageUnscaled($image,0,0) # Add the contents of $image # Now save the $NewImage instead of $image $Source.Dispose() $NewImage.Save($basedir,$imageFormat::Jpeg) } При выполнении получаю ошибку: ошибка из-за того, что не дает перезаписать файлы, т.к они заняты самим скриптом. в тоже время по строке выдает Нужно: чтобы файлы перезаписывались, это принципиально нужно. Может как-то через буфер реализовать. И были не заняты никаким процессом после перекодировки. |
|
Отправлено: 14:28, 25-06-2021 |
Старожил Сообщения: 286
|
Профиль | Отправить PM | Цитировать пока сделал так, чтобы сохраняло под другим именем (дописывало new_), а потом через remove-item -exclude *new_*.* удаляю все ненужное.
но все таки хотелось бы сразу чтобы перезаписывало, и освобождало доступ к файлу. |
Отправлено: 18:06, 25-06-2021 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата 9119:
|
|
Отправлено: 09:26, 26-06-2021 | #3 |
Старожил Сообщения: 286
|
Профиль | Отправить PM | Цитировать Iska, я не совсем понимаю для чего именно его надо вызывать в данном случае...
мне нужно было освободить входной файл, для перезаписи... Но вопрос в том, что .Dispose() впринципе не вызывается. не для чего. Где-то попадалась инфа как этот момент( с блокировкой входного файла на перезапись) обходили используя буфер. т.е входнной файл помещали в буфер и от туда его использовали или как-то так, в результате чего перезаписать файл можно было без проблем и без .Dispose() |
Последний раз редактировалось 9119, 26-06-2021 в 22:11. Отправлено: 22:06, 26-06-2021 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
PowerShell - Доработать скрипт копирования файлов изображений | mihailov_den@vk | Скриптовые языки администрирования Windows | 12 | 21-01-2019 14:08 | |
Delphi - [решено] Помогите поправить скрипт Show & Hide Fles and Folders | ufooo000 | Программирование и базы данных | 4 | 12-02-2017 18:07 | |
Любой язык - скрипт рекурсивного изменения размера изображений | batyaPS | Скриптовые языки администрирования Windows | 23 | 23-01-2015 14:06 | |
[решено] Скрипт загрузки изображений и создания эскиза | Blast | Вебмастеру | 8 | 12-04-2013 00:51 | |
VBS/WSH/JS - [решено] скрипт: перечень сервисов и статусов, как поправить кодировку и отсортировать? | andr_mozg | Скриптовые языки администрирования Windows | 19 | 24-12-2012 12:31 |
|