|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Наложить печать с датой на картинку |
|
|
Наложить печать с датой на картинку
|
|
Новый участник Сообщения: 14 |
Здравствуйте. Помогите справиться с задачей.
Нужно на определен. картинку в заданном месте наложить печать с датой. Подскажите, есть ли в АвтоАйти ф-ция или либа соотв. для работы с данной задачей? |
|
|
Отправлено: 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 |
|
Новый участник Сообщения: 14
|
Профиль | Сайт | Отправить 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 | |
|