Что нового

Наложение .png на .jpg

saraconor

Новичок
Сообщения
416
Репутация
3
Как через Autoit совместить это:
7296723edb7aec17c8a696c0e02161cd.jpg

с этим:
70b174fe965447413aefb2bcb5d74f29.png

чтобы на выходе получилось так?:
1f8ff9c7166044ddb7c2a51964589c18.jpg
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Функция _GDIPlus_GraphicsDrawImage(), первый пример в справке.
 
Автор
S

saraconor

Новичок
Сообщения
416
Репутация
3
Yashied сказал(а):
Функция _GDIPlus_GraphicsDrawImage(), первый пример в справке.
Код:
#include <GDIPlus.au3>
#include <ScreenCapture.au3>
#include <WinAPI.au3>

_Main()
Func _Main()
    Local $hImage1, $hImage2, $hGraphic
    _GDIPlus_Startup ()
    $hImage1 = _GDIPlus_BitmapCreateFromFile (@ScriptDir&'\1.jpg')
    $hImage2 = _GDIPlus_BitmapCreateFromFile (@ScriptDir&'\2.png')
    $hGraphic = _GDIPlus_ImageGetGraphicsContext ($hImage2)
    _GDIPlus_GraphicsDrawImage ($hGraphic, $hImage1, 100, 100)
    _GDIPlus_ImageSaveToFile ($hImage1,@ScriptDir&'\3.jpg')
    _GDIPlus_ImageDispose ($hImage1)
    _GDIPlus_ImageDispose ($hImage2)
    _GDIPlus_ShutDown ()
EndFunc

Не работает почему-то.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
saraconor сказал(а):
Не работает почему-то.
Смотрите внимательно, какое изображение на какое накладываете ($hImage2 на $hImage1). Вторая ошибка в том, что не прочитали описание к функции _GDIPlus_GraphicsDrawImage(). 3 и 4 параметры здесь, это координаты, куда необходимо помещать накладываемое изображение, т.е. $hImage2, и должны быть равны {0;0}.

Код:
#Include <GDIPlus.au3>

_Main()

Func _Main()
	Local $hImage1, $hImage2, $hGraphic
	_GDIPlus_Startup()
	$hImage1 = _GDIPlus_BitmapCreateFromFile(@ScriptDir & '\1.jpg')
	$hImage2 = _GDIPlus_BitmapCreateFromFile(@ScriptDir & '\2.png')
	$hGraphic = _GDIPlus_ImageGetGraphicsContext($hImage1)
	_GDIPlus_GraphicsDrawImage($hGraphic, $hImage2, 0, 0)
	_GDIPlus_ImageSaveToFile($hImage1, @ScriptDir & '\3.jpg')
	_GDIPlus_GraphicsDispose($hGraphic)
	_GDIPlus_ImageDispose($hImage1)
	_GDIPlus_ImageDispose($hImage2)
	_GDIPlus_Shutdown()
EndFunc   ;==>_Main
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Перед записью в файл:

Код:
_GDIPlus_ImageSaveToFile($hImage1, @ScriptDir & '\1.jpg')


Удаляем предыдущий файл .jpg:

Код:
FileDelete(@ScriptDir & '\1.jpg')


P.S

Это к потертому посту.
 
Автор
S

saraconor

Новичок
Сообщения
416
Репутация
3
Мне тоже мысль про FileDelete пришла, только удалить файл до _GDIPlus_Shutdown() не получилось почему-то. пришлось так:
Код:
_GDIPlus_Shutdown()
	FileDelete(@ScriptDir & '\1.jpg')	;замена фотографии на комбинацию
	FileMove(@ScriptDir&'\3.jpg',@ScriptDir&'\1.jpg')
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Вместо FileDelete() Используйте FileMove() с флагом FC_OVERWRITE (см. справку).

Код:
FileMove(@ScriptDir & '\3.jpg', @ScriptDir & '\1.jpg', $FC_OVERWRITE)
 
Автор
S

saraconor

Новичок
Сообщения
416
Репутация
3
Вы меня опередили :smile:
Код:
FileMove(@ScriptDir&'\3.jpg',@ScriptDir&'\1.jpg',1)

Yashied сколько лет вы уже с autoit работаете?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
saraconor сказал(а):
Yashied сколько лет вы уже с autoit работаете?
С 2007 года. Все, заканчиваем флудить в этой теме.
 
Верх