Что нового

[Автоматизация] Настройка Кривые () в Фотошопе с помошью hotkey AutoIt

StarEdik

Новичок
Сообщения
365
Репутация
4
Версия AutoIt: 3.3.7.14 beta

Описание: Привет всем кто ищет помощь и тем кому помогли и тем кому помог и тому который оставил на пол пути из за занятости.
Один хороший человек сделал для меня пример .Этот скрипт открывает файл в Фотошопе и при нажатие Ф5 делает коррекцию изображения с помощью кривых.короче с помощью этого скрипта можно изменит яркось изображения.
Но у этого скрипта есть недостатки.

1) скрипт открывает файл au.bmp который лежит виесте со скиптом .Ф5 действует как положено.Но когда

открываю новое изображение нажимаю на ф5 скрипт выдает ошибку и выходит.

2) Обычно когда я Скачиваю с инета екшн файлы,загружаю их с помощью диалогового окна "Открыт" и этот екш

загружаеться в свое родное место екшенов.Так я Переименовал в коде au.bmp на au.atn.Пробовал этим же

способом открыт action файл au.atn который тоже лежит вместе со скриптом.Ок.но опят скрипт завершает свою

работу.
В чем ошибка не знаю.может вы поможете разобраться с этим.
Вот код

Код:
HotKeySet('{F5}', '_Curve')
HotKeySet('{ESC}', '_Exit')

; Точки кривой
Dim $aPoint1[2] = [0,16]
Dim $aPoint2[2] = [16,16]
Dim $aPoint3[2] = [128,128]
Dim $aPoint4[2] = [240,240]
Dim $aPoint5[2] = [255,240]

Global $aCurve[5] = [$aPoint1, $aPoint2, $aPoint3, $aPoint4, $aPoint5]

; Файл, который откроется по умолчанию, если в PS нет активных документов
; Иначе коррекция будет применена к активному документу
Global $sFileName = @ScriptDir & "\au.bmp"

$oPS = ObjCreate("Photoshop.Application")
If Not IsObj($oPS) Then Exit

$oPS.BringToFront
$oPS.DisplayDialogs = 3

If $oPS.Documents.Count > 0 Then
    $oActiveDoc = $oPS.ActiveDocument
Else
    $oActiveDoc = $oPS.Open( $sFileName )
EndIf

While 1
    Sleep(250)
WEnd

Func _Curve()
    $oActiveLayer = $oActiveDoc.ActiveLayer
    $oActiveLayer.adjustCurves($aCurve)
EndFunc

Func _Exit()
    $oPS = 0
    Exit
EndFunc

Примечания:

Привет всем.Помогите плз.Мне часто приходиться исползовать в Фотошопе коррекцию изображения с помощью кривых. Для этого у меня есть acnions и его я использую с помощью горячих клав. Но хотелось бы сделать это с помошью hotkey AutoIt- чтоб при нажатие на кнопку F5 коррекция изображение изменялось на целых (+10 -10 )единиц,а при шифт F5 - наоборот на (-10 +10 )единиц.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
StarEdik [?]
Мне часто приходиться исползовать в Фотошопе коррекцию изображения с помощью кривых.
Вы имеете в виду Image->Adjustments->Curves?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
А чем Actions не подходит? Там и горячие клавиши можно назначить. Я только ими в Photoshop и пользуюсь.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
StarEdik [?]
Код:
HotKeySet('{F5}', '_Curve')
HotKeySet('{ESC}', '_Exit')

; Точки кривой
Dim $aPoint1[2] = [0,16]
Dim $aPoint2[2] = [16,16]
Dim $aPoint3[2] = [128,128]
Dim $aPoint4[2] = [240,240]
Dim $aPoint5[2] = [255,240]

Global $aCurve[5] = [$aPoint1, $aPoint2, $aPoint3, $aPoint4, $aPoint5]

; Файл, который откроется по умолчанию, если в PS нет активных документов
; Иначе коррекция будет применена к активному документу
Global $sFileName = @ScriptDir & "\au.bmp"

$oPS = ObjCreate("Photoshop.Application")
If Not IsObj($oPS) Then Exit

$oPS.BringToFront
$oPS.DisplayDialogs = 3

While 1
	Sleep(250)
WEnd

Func _Curve()
	If $oPS.Documents.Count > 0 Then
		$oActiveDoc = $oPS.ActiveDocument
	Else
		$oActiveDoc = $oPS.Open( $sFileName )
	EndIf
	$oActiveLayer = $oActiveDoc.ActiveLayer
	$oActiveLayer.adjustCurves($aCurve)
EndFunc

Func _Exit()
	$oPS = 0
	Exit
EndFunc



Добавлено:
Сообщение автоматически объединено:

Однако интересно, но как вы ухитряетесь поставить значения:
а при шифт F5 - наоборот на (-10 +10 )
 
Автор
StarEdik

StarEdik

Новичок
Сообщения
365
Репутация
4
Garrett
Если есть спасибо и оно огромное это для вас.Спасибо огромное.И еще .Надо открыт "1ст.вмр" файл в Фотошопе.Автоматически при запуске скрипта аутоит- без использования диалогового окна "Открыт файл
(Файл "1ст.вмр" лежить в папке вместе со скриптом)
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
StarEdik [?]
И еще .Надо открыт "1ст.вмр" файл в Фотошопе.Автоматически при запуске скрипта аутоит- без использования диалогового окна "Открыт файл"
Скрипт выше именно так и поступает, он проверяет, если PS не запущен, то он его запустит и откроет файл, который указан
Код:
; Файл, который откроется по умолчанию, если в PS нет активных документов
; Иначе коррекция будет применена к активному документу
Global $sFileName = @ScriptDir & "\au.bmp"

Если PS уже открыт, но файлов открытых нет, то он загрузит файл.
Если PS открыт и загружены файлы, то он применит кривую к активному документу.
 
Автор
StarEdik

StarEdik

Новичок
Сообщения
365
Репутация
4
ОК.Спасибо.Может у вас имеется пример как с помощью аутоит файла управлять екшены которые я имею


Добавлено:
Сообщение автоматически объединено:

Garrett
Проверил ваш файл.Есть одно но я что то явно не то делаю.Создал в папке вместе со скриптом файл au.bmp.Запускаю скрипт.На мое удивление он нашель где я спрятал Фотошоп .ехе открыл его и все.После я нажал Ф5.Открылся au.bmp.Так ли работает скрипт или нет.Можно чтоб без Ф5 сразу открывалься au.bmp а потом уже с помощью Ф5 работат с кривыми.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
StarEdik [?]
Может у вас имеется пример как с помощью аутоит файла управлять екшены которые я имею
Код:
;...
HotKeySet('{F4}', '_Action')
;...
Func _Action()
	If $oPS.Documents.Count > 0 Then
		$oActiveDoc = $oPS.ActiveDocument
	Else
		$oActiveDoc = $oPS.Open( $sFileName )
	EndIf
	$oPS.DoAction("Action 1", "Resize")
EndFunc
;...



Добавлено:
Сообщение автоматически объединено:

StarEdik [?]
Так ли работает скрипт или нет.
Да.

Можно чтоб без Ф5 сразу открывалься au.bmp а потом уже с помощью Ф5 работат с кривыми.
Код:
HotKeySet('{F5}', '_Curve')
HotKeySet('{F4}', '_Action')
HotKeySet('{ESC}', '_Exit')

; Точки кривой
Dim $aPoint1[2] = [0,16]
Dim $aPoint2[2] = [16,16]
Dim $aPoint3[2] = [128,128]
Dim $aPoint4[2] = [240,240]
Dim $aPoint5[2] = [255,240]

Global $aCurve[5] = [$aPoint1, $aPoint2, $aPoint3, $aPoint4, $aPoint5]

; Файл, который откроется по умолчанию, если в PS нет активных документов
; Иначе коррекция будет применена к активному документу
Global $sFileName = @ScriptDir & "\au.bmp"

$oPS = ObjCreate("Photoshop.Application")
If Not IsObj($oPS) Then Exit

$oPS.BringToFront
$oPS.DisplayDialogs = 3

If $oPS.Documents.Count > 0 Then
	$oActiveDoc = $oPS.ActiveDocument
Else
	$oActiveDoc = $oPS.Open( $sFileName )
EndIf

While 1
	Sleep(250)
WEnd

Func _Curve()
	$oActiveLayer = $oActiveDoc.ActiveLayer
	$oActiveLayer.adjustCurves($aCurve)
EndFunc

Func _Action()
	$oPS.DoAction("Action 1", "Resize")
EndFunc

Func _Exit()
	$oPS = 0
	Exit
EndFunc



Добавлено:
Сообщение автоматически объединено:

P.S. Проверок на ошибки в скрипте нет!
 
Автор
StarEdik

StarEdik

Новичок
Сообщения
365
Репутация
4
Garrett
Наверно с моим фотошопом что то не так.Он не открывает файлы "открыт с помощью Фотошоп.ехе".Вопросов много на со свеми разобратся.На сегодня для меня хватит.Огромное вам благодарность.Надеюс в далнейшем обрашаться к вам с прозбами.А хочу я сделат для себя форму для фотошопа(on top) чтоб там было несколько кнопок и имелос бы возможность управлят екшенами и своими hotkey-ми.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Скрипт выше при запуске сразу как вы и просили, открывает PS и загружает файл.
 
Автор
StarEdik

StarEdik

Новичок
Сообщения
365
Репутация
4
Garrett
Привет.Всё ОК.
Тепер про обработке ощибок.
1) 2-ой скрипт сразу открыл au.bmp.Ф5 действует как положено.Но- открываю новое изображение нажимаю на ф5
скрипт выдает ошибку и выходит
2) Скачал с инета екшн файл.Переименовал на au.atn.Пробовал этим же способом открыт action файл au.atn

(заменил au.bmp на au.atn).Опять выдается msg ошибка и скрипт выходит.Все эти происходят в линиях 27,36...
Плз.помогите устранит эти ошибки,
1- чтоб скрипт при ошибке не выходил а как на Vb6 On error resume next
2- чтоб было вожможность открыт файлы atn
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
StarEdik сказал(а):
Garrett
Привет.Всё ОК.
Тепер про обработке ощибок.
1) 2-ой скрипт сразу открыл au.bmp.Ф5 действует как положено.Но- открываю новое изображение нажимаю на ф5
скрипт выдает ошибку и выходит
2) Скачал с инета екшн файл.Переименовал на au.atn.Пробовал этим же способом открыт action файл au.atn

(заменил au.bmp на au.atn).Опять выдается msg ошибка и скрипт выходит.Все эти происходят в линиях 27,36...
Плз.помогите устранит эти ошибки,
1- чтоб скрипт при ошибке не выходил а как на Vb6 On error resume next
2- чтоб было вожможность открыт файлы atn
Если вы хотите, получит полностью рабочий скрипт под ваши задачи, то обратитесь к модератору данного раздела для переноса вашей темы в раздел "Стол заказов"
 
Автор
StarEdik

StarEdik

Новичок
Сообщения
365
Репутация
4
Garrett
Нет.Мне только ваши советы нужны.Если не хотите отвечать и на это вам спасибо
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
StarEdik [?]
Если не хотите отвечать
Вы немного меня не так поняли! :smile:
Если у вас есть код и вы испытываете затруднения, то в этой теме вам обязательно помогут. Выкладывайте код или участок кода, где вы испытываете затруднение, и опишите, что у вас не получается. Но как видно с самого начала, у вас нет кода.
Я дал вам пример, но как я понял, вам нужен готовый рабочий скрипт, вот поэтому я вам и написал, что для этого есть специальный раздел.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
StarEdik [?]
Постараюсь обратиться к модератору для переноса темы в раздел "Стол заказов"
Для этого тему нужно оформить в соотвестсвий с правилами раздела.


Добавлено:
Сообщение автоматически объединено:

Garrett [?]
Цитата: StarEdik от Сегодня в 09:26:28

{OverQuoteWarn.Admin}

;)
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
заполни графу описание, в которой подробно распиши что ты хочешь сделать. чем больше деталей, тем лучше для тебя и для тех, кто захочет тебе помочь.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
StarEdik
Я имел в виду изменить существующую тему, а не создавать новую...
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
StarEdik [?]
Точки кривой вы как определили
В смысле?
Определение тут простое, точка имеет в 2D плоскости две координаты "X" и "Y"
Код:
Dim $aPoint1[2] = [0,16] ; Координаты первой точки... и т.д.

Вы сами должны знать, сколько и какие точки на кривой вам нужны!

дадите ссылку с примерами чтоб я в дальнейшем сам мог разобратся
Всё у вас на компьютере есть, просто нужно после инсталляции программы, заглянуть в папку, и поинтересоваться, что же там у нас установилось ;)
Другой вариант, посетить сайт программы и почитать документацию. :smile:

как мне самому найти точки в диалоговых окнах например в фотошопе есть Ctrl+B ,Ctrl+U,Ctrl+M
Точки вам искать не нужно, вам нужно знать, какие параметры нужно передать методу объекта, и какие свойства выставить.
К примеру, методу adjustCurves передается массив точек.

P.S. Вы определитесь с задачей, что в итоги вы хотите получить, "мега-программу" или утилиту для автоматизации своей работы.
Самый лучшей вариант расписать себе ТЗ и в последствие придерживаться его.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
StarEdik
{CodeWarn}

Исправьте, пожалуйста.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Задачи:
1. Запускает или активирует Photoshop, если он запущен.
1. Выполняет действие Curve – F5
2. Выполняет указанный Action – F4

Обработка ошибок.
Если нужный Action не загружен в Action List, то при нажатие F4 выдается предупреждение об ошибке.
Действие: Нужно загрузить Action в Action List (привычным для вас способом)

Если в окне редактора нет загруженных документов (Action загружен), то при нажатии F4 выдаётся стандартное предупреждение Photoshop.
Действие: Нажать кнопку Stop (хочется нажать Continue? Действуйте, но лучше Stop)

Если в окне редактора нет загруженных документов, то при нажатии F5 нечего не произойдет.

Если в окне редактора загружен(ы) документ(ы), то при нажатии F5 к активному документу применится действие Curve.

Код:
Global $iEventError = 0

; Action который нужно запустить (название и действие)
Global $sActionName = "Resize", $sAction = "Action 1"

HotKeySet('{F5}', '_Curve')
HotKeySet('{F4}', '_Action')
HotKeySet('{ESC}', '_Exit')

; Точки кривой
Dim $aPoint1[2] = [0,16]
Dim $aPoint2[2] = [16,16]
Dim $aPoint3[2] = [128,128]
Dim $aPoint4[2] = [240,240]
Dim $aPoint5[2] = [255,240]

Global $aCurve[5] = [$aPoint1, $aPoint2, $aPoint3, $aPoint4, $aPoint5]

$oPS = ObjCreate("Photoshop.Application")
$oError = ObjEvent("AutoIt.Error","_PSObjErr")
If Not IsObj($oPS) Then Exit
$oActionDescriptor = ObjCreate("Photoshop.ActionDescriptor")
If Not IsObj($oActionDescriptor) Then Exit

$oPS.BringToFront
$oPS.DisplayDialogs = 3

While 1
    Sleep(250)
WEnd

Func _Curve()
	If $oPS.Documents.Count > 0 Then
		$oActiveDoc = $oPS.ActiveDocument
		$oActiveLayer = $oActiveDoc.ActiveLayer
		$oActiveLayer.adjustCurves($aCurve)
	EndIf
EndFunc

Func _Action()
	$oPS.DisplayDialogs = 3
    $oPS.DoAction($sAction, $sActionName)
EndFunc

Func _PSObjErr()

	Switch StringReplace($oError.description, @LF , Chr(32))
		Case 'General Photoshop error occurred. - The object "action "' & $sAction & '" of set "' & $sActionName & '"" is not currently available.'
			Msgbox(16, 'Photoshop', 'Загрузите "' & $sActionName & '"" action.')
			
	EndSwitch
	Local $iErr = $oError.number
	If $iErr = 0 Then $iErr = -1
	$iEventError = $iErr
Endfunc

Func _Exit()
	
	$oActionDescriptor = 0
	$oError = 0
    $oPS = 0
    Exit
EndFunc
 
Верх