Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Обрезка картинки

Ответить
Настройки темы
CMD/BAT - [решено] Обрезка картинки

Ветеран


Сообщения: 2182
Благодарности: 720


Конфигурация

Профиль | Отправить PM | Цитировать


Можно ли с помощью bat или сторонних программ обрезать края картинок jpg, расположенных "c:\WINDOWS\Web\Wallpaper\" до пропорций установленного разрешения экрана?

Отправлено: 15:50, 04-05-2012

 

Ветеран


Сообщения: 2182
Благодарности: 720

Профиль | Отправить PM | Цитировать


Цитата Iska:
sov44, так мой код заработал у Вас после установки библиотеки? »
да, спасибо, всё работает. Отметил тему решённой. Интересен альтернативный метод в cmd.

Последний раз редактировалось sov44, 10-05-2012 в 23:01.


Отправлено: 22:56, 10-05-2012 | #31



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024

Профиль | Отправить PM | Цитировать


Цитата sov44:
kiripanda, попробовал скрипт, ошибка »
sov44, у вас wmic ничего не возвращает. Попробуйте заменить
Код: Выделить весь код
wmic DesktopMonitor get ScreenHeight^,ScreenWidth /value
на
Код: Выделить весь код
wmic path Win32_VideoController get CurrentVerticalResolution^,CurrentHorizontalResolution /value
Найти все %ScreenHeight% и %ScreenWidth% и заменить на %CurrentVerticalResolution% и %CurrentHorizontalResolution% соответственно.

Отправлено: 12:05, 11-05-2012 | #32


Ветеран


Сообщения: 2182
Благодарности: 720

Профиль | Отправить PM | Цитировать


Iska, Можно ли поправить Ваш скрипт vbs в посте 6, чтобы рядом создавался бэкап папки Wallpaper, а затем обработка картинок?

Отправлено: 14:53, 14-05-2012 | #33


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


sov44, пробуйте:
читать дальше »
Код: Выделить весь код
Option Explicit

Dim objFSO
Dim objFile

Dim strPath2Wallpapers
Dim strPath2File

Dim objImageFile
Dim objImageProcess

Dim lngScreenHeight
Dim lngScreenWidth

Dim lngDelta


Set objFSO          = WScript.CreateObject("Scripting.FileSystemObject")
Set objImageFile    = WScript.CreateObject("WIA.ImageFile")
Set objImageProcess = WScript.CreateObject("WIA.ImageProcess")

strPath2Wallpapers = objFSO.BuildPath(objFSO.GetSpecialFolder(0).Path, "Web\Wallpaper")

With WScript.CreateObject("htmlfile")
	With .Script.screen
		lngScreenHeight = .Height
		lngScreenWidth  = .Width
	End With
End With

If objFSO.FolderExists(strPath2Wallpapers) Then
	With objFSO.GetFolder(strPath2Wallpapers)
		' Создадим копию папки %SystemRoot%\Web\Wallpaper
		.Copy objFSO.BuildPath(objFSO.GetSpecialFolder(0).Path, "Web\Wallpaper.bak"), True
	
		For Each objFile In .Files
			WScript.Echo objFile.Path
			
			objImageFile.LoadFile objFile.Path
			
			With objImageProcess
				.Filters.Add .FilterInfos("Crop").FilterID
				
				With .Filters(1).Properties
					If lngScreenHeight / lngScreenWidth > objImageFile.Height / objImageFile.Width Then
						' Подрежем справа-слева
						lngDelta = (objImageFile.Width - objImageFile.Height * lngScreenWidth / lngScreenHeight) / 2
						
						.Item("Left")   = lngDelta
						.Item("Right")  = lngDelta
					ElseIf lngScreenHeight / lngScreenWidth < objImageFile.Height / objImageFile.Width Then
						' Подрежем сверху-снизу
						lngDelta = (objImageFile.Height - objImageFile.Width * lngScreenHeight / lngScreenWidth) / 2
						
						.Item("Top")    = lngDelta
						.Item("Bottom") = lngDelta
					Else
						' Nothing to do
					End If
				End With
				
				Set objImageFile = .Apply(objImageFile)
				
				.Filters.Remove 1
			End With
			
			' Перезаписывать существующий файл компонент не умеет,
			' потому предварительно удаляем файл…
			strPath2File = objFile.Path
			objFile.Delete
			
			' Сохраняем файл под тем же именем:
			objImageFile.SaveFile strPath2File
		Next
	End With
Else
	WScript.Echo "Wallpaper's folder [" & strPath2Wallpapers & "] not found"
End If

Set objImageProcess = Nothing
Set objImageFile    = Nothing
Set objFSO          = Nothing

WScript.Quit 0

Копия папки получит имя «Wallpaper.bak».
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:13, 15-05-2012 | #34



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Обрезка картинки

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Графика - обрезка пустых краев изображения nmn Программное обеспечение Windows 4 26-08-2010 18:25
.NET - [решено] CroppedBitmap. Обрезка изображения. Casper-SC Программирование и базы данных 1 21-08-2010 10:23
Прочие - Нужна программа, что бы заливать картинки в чаты, а не ссылки на картинки Clever fellow Программное обеспечение Windows 2 18-02-2010 17:22
Обрезка AVI Евгешка Видео и аудио: обработка и кодирование 5 31-03-2008 20:37




 
Переход