|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Наложить печать с датой на картинку |
|
Наложить печать с датой на картинку
|
Новый участник Сообщения: 13 |
Профиль | Сайт | Отправить PM | Цитировать Здравствуйте. Помогите справиться с задачей.
Нужно на определен. картинку в заданном месте наложить печать с датой. Подскажите, есть ли в АвтоАйти ф-ция или либа соотв. для работы с данной задачей? |
|
Отправлено: 12:21, 05-07-2022 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать Eugene_Пилигрим@vk,
В Autoit в теории есть доступ ко всему, что есть в Windows Ниже несложный пример с добавлением изображения из файла в качестве штампа (произвольный размер штампа и отсчёт координат сверху/снизу/справа/слева изображения). Относительно просто можно добавить рисование фигур, накладывание текста. При некотором упорстве можно добавить прозрачность и вращение накладываемого изображения. пример
#include <MsgBoxConstants.au3> #include "__GDIPlus_ImageAddStamp1.au3" _GDIPlus_Startup() $in = @ScriptDir & "\image.jpg" $stamp = @ScriptDir & "\stamp.png" __GDIPlus_ImageAddStamp1($in, $stamp, '=top-left.jpg', 0, 0, 99, 99, 1, 255) __GDIPlus_ImageAddStamp1($in, $stamp, '=top-right.jpg', -1, 0, 99, 99, 1, 255) __GDIPlus_ImageAddStamp1($in, $stamp, '=bottom-left.jpg', 0, -1, 99, 99, 1, 255) __GDIPlus_ImageAddStamp1($in, $stamp, '=bottom-right.jpg', -1, -1, 99, 99, 1, 255) __GDIPlus_ImageAddStamp1($in, $stamp, '=top-left-noaspect.jpg', 0, 0, 99, 99, 0, 255) $inw = @ScriptDir & "\=overwrite-image.jpg" FileCopy($in, @ScriptDir & "\=overwrite-image.jpg", 1) __GDIPlus_ImageAddStamp1($inw, $stamp, -1, 0, 0, 99, 99, 0, 255, 512) _GDIPlus_ShutDown() __GDIPlus_ImageAddStamp1.au3
#include-once #include <GDIPlus.au3> #include <FileConstants.au3> Func __GDIPlus_ImageAddStamp1($inputImage, $stampImage, $outputImage, _ $dirX = 0, $dirY = 0, _ $posX = 0, $posY = 0, _ $aspectRatio = 1, _ $stampW = -1, $stampH = -1 _ ) Local $hInput, $hStamp, $hGraphics Local $overwrite Local $outputFile Local $retcode = 1 $hInput = _GDIPlus_ImageLoadFromFile($inputImage) If @error Then $retcode = -1 If $retcode > 0 Then $hStamp = _GDIPlus_ImageLoadFromFile($stampImage) If @error Then $retcode = -2 EndIf If $retcode > 0 Then $hGraphics = _GDIPlus_ImageGetGraphicsContext($hInput) If @error Then $retcode = -3 EndIf If $retcode > 0 Then $overwrite = IsNumber($outputImage) And $outputImage = -1 Local $stampWT = _GDIPlus_ImageGetWidth($hStamp) Local $stampHT = _GDIPlus_ImageGetHeight($hStamp) If $stampW = -1 And $stampH = -1 Then Local $stampWidth = $stampWT Local $stampHeight = $stampHT ElseIf $stampW > 0 And $stampH = -1 Then Local $stampWidth = $stampW Local $stampHeight = $aspectRatio = 1 ? Round($stampW / $stampWT * $stampHT) : $stampHT ElseIf $stampW = -1 And $stampH > 0 Then Local $stampHeight = $stampH Local $stampWidth = $aspectRatio = 1 ? Round($stampH / $stampHT * $stampWT) : $stampWT Else ;$stampW > 0 And $stampH > 0 Local $stampWidth = $stampW Local $stampHeight = $stampH EndIf Local $stampLeft = ($dirX = -1) ? (_GDIPlus_ImageGetWidth($hInput) - $stampWidth - $posX) : ($posX) Local $stampTop = ($dirY = -1) ? (_GDIPlus_ImageGetHeight($hInput) - $stampHeight - $posY) : ($posY) _GDIPlus_GraphicsDrawImageRect($hGraphics, $hStamp, $stampLeft, $stampTop, $stampWidth, $stampHeight) $outputFile = $overwrite ? $inputImage & '~tmp' & StringMid($inputImage, StringInStr($inputImage, '.', 1, -1)) : $outputImage _GDIPlus_ImageSaveToFile($hInput, $outputFile) If @error Then $retcode = -11 EndIf If $hInput Then _GDIPlus_ImageDispose($hInput) If $hStamp Then _GDIPlus_ImageDispose($hStamp) If $hGraphics Then _GDIPlus_GraphicsDispose($hGraphics) If $retcode > 0 And $overwrite Then If Not FileMove($outputFile, $inputImage, $FC_OVERWRITE) Then $retcode = -13 EndIf Return $retcode EndFunc ЗЫ Можно и не лезть в дебри WinAPI, а обойтись любым пакетным инструментом вроде imagemagick - примеры использования будет найти проще. |
Последний раз редактировалось iglezz, 06-07-2022 в 22:53. Отправлено: 19:42, 06-07-2022 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 13
|
Профиль | Сайт | Отправить PM | Цитировать Спасибо, попробую. Стороннее ПО не подходит. Там девушки будут с этим хуком работать.
|
Отправлено: 11:47, 07-07-2022 | #3 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
автоматически приклеить картинку на картинку | Setser | Хочу все знать | 1 | 13-11-2012 13:35 | |
Как наложить на видео текст | KoRn0509 | Видео и аудио: обработка и кодирование | 2 | 23-02-2012 13:49 | |
Как наложить звук на видео? | Relax | Видео и аудио: обработка и кодирование | 3 | 30-08-2011 13:33 | |
Как наложить символ на клаву? | newbigmir | Microsoft Windows Vista | 1 | 30-03-2007 21:21 | |
Как наложить на видео??? | kotel | Видео и аудио: обработка и кодирование | 2 | 16-10-2006 07:09 |
|