Я предполагал, что обрезка изображения будет очень простой задачей из .net. Но независимо от того, что я пытаюсь, я просто не могу заставить работать.Photoshop урожай с vb.net
документация несколько неопределенна -
«Первый параметр представляет собой массив из четырех координат, которые отмечают часть оставшейся после обрезки»
Это может означать массив из четырех чисел, или это может означать массив из четырех массивов двух чисел (координата после всех состоит из двух чисел). «часть, оставшаяся после обрезки», я подразумеваю «часть изображения, предназначенного для сохранения после обрезки».
Поскольку функция select принимает массив координатных массивов - {{x1, y1}, y2, y2}, {x3, y3}, {x4, y4}} - я надеялся, что урожай будет работать одинаково путь. Нет кубиков.
Далее я пробовал очень простой подход, предположим, что «левый, верхний, правый, нижний» действительно означает именно это. Итак, я подключил совершенно разумные ценности и ... не кубики.
В каждом случае PS выдает диалоговое окно с сообщением «Не удалось выполнить команду, потому что затронутая область пуста или не перекрывает холст».
Вот фрагмент кода:
Dim PSDapp
PSDapp = CreateObject("Photoshop.Application")
Dim psarray As Object = {20, 20, 120, 120}
Dim PSDcurrentDoc
PSDapp.preferences.rulerUnits = 1
PSDcurrentDoc = PSDapp.open("c:\cat.bmp")
PSDapp.activeDocument = PSDapp.documents.item(1)
PSDcurrentDoc.crop(psarray)
Что еще более странно, что, если я беру выше код и портировать его в сценарий, он работает просто отлично. Может кто-нибудь (кто-нибудь!), Пожалуйста, напишите минимальный рабочий пример использования функции обрезки, используя COM (а не скриптинг)?
Thanks Idle_Mind - Я согласен, что это был бы хороший подход в .netLand, но PS pukes, когда я его пробую. То, что вы предлагаете, - это то, что PS хочет для выбора - массив массивов. Как ни странно, это прекрасно работает, чтобы создать окно выбора. Урожай кажется другим. Если я получаю доступ к функции crop через VBS, тогда простой массив целых чисел из четырех значений («left», «top», «right», «bottom») работает так, как ожидалось. Тот же массив, прошедший через мой код vb.net, не работает. Бешенство! Это должно быть 10-секундная сделка ... –