1

Тема: AHK: Наложение картинки

Забыл или не знал функцию, если кодом на 1.jpg наложить 2.png, то получается 0.jpg.
В итоге линии из 2.png получаются размытыми.
Если например тоже самое сделать в PaintDotNet слоями, в режиме смешивания "умножение", то получается как надо, результат на 3.jpg.

Картинки в архиве.


#SingleInstance, Force
#NoEnv


sFile1 = D:\Temp\1.jpg
sFile2 = D:\Temp\2.png   
oFile = D:\Temp\0.jpg   

If !pToken := Gdip_Startup()
{
	MsgBox, 48, gdiplus error!, Gdiplus failed to start. Please ensure you have gdiplus on your system
	ExitApp
} 

pBitmapSource2 := Gdip_CreateBitmapFromFile(sFile2)
pBitmapSource1 := Gdip_CreateBitmapFromFile(sFile1) 
sWidth := Gdip_GetImageWidth(pBitmapSource1), sHeight := Gdip_GetImageHeight(pBitmapSource1) 

pGraphics := Gdip_GraphicsFromImage(pBitmapSource1) 
; Gdip_SetSmoothingMode(pGraphics, 4)
; Gdip_SetInterpolationMode(pGraphics, 7) 
; Gdip_SetCompositingMode(pGraphics, 1) 
Gdip_DrawImage(pGraphics, pBitmapSource2, 0, 0, sWidth, sHeight, 0, 0, sWidth, sHeight)

Gdip_SaveBitmapToFile(pBitmapSource1, oFile)
Gdip_DeleteGraphics(pGraphics)
Gdip_DisposeImage(pBitmapSource2) 
Gdip_DisposeImage(pBitmapSource1)  
Gdip_Shutdown(pToken) 
	
run "%oFile%"   
exitapp
Post's attachments

0.zip 329.61 kb, 4 downloads since 2023-07-02 

You don't have the permssions to download the attachments of this post.
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

2

Re: AHK: Наложение картинки

Как-то с матрицей поиграть?

Matrix = -1|0|0|0|0|0|-1|0|0|0|0|0|-1|0|0|0|0|0|0.5|0|0|0|0|0|1
Gdip_DrawImage(pGraphics, pBitmapSource2, 0, 0, sWidth, sHeight, 0, 0, sWidth, sHeight, Matrix)
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Наложение картинки

Знать бы ещё что это за зверь, и как им играться.
У тебя оно как MatrixNegative, только одна из единиц заменена на 0.5. Но что это за магический набор 25 значений...

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4

Re: AHK: Наложение картинки

Я сам до сегодняшнего дня не знал, но мне ChatGPT довольно подробно пояснил. 0.5 отвечает за альфа-канал.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Наложение картинки

А вопрос ты как задал?



Интересно, Matrix, это и есть режим смешивания.
https://i.imgur.com/7sQc2Dk.png

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

6

Re: AHK: Наложение картинки

serzh82saratov пишет:

Интересно, Matrix, это и есть режим смешивания.

Нет, если интересуют режимы смешивания, то можешь здесь посмотреть алгоритмы:
https://www.codeproject.com/Articles/55 … -basic-col

7

Re: AHK: Наложение картинки

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

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

8

Re: AHK: Наложение картинки

Делаешь lockbits на оба pbitmap, получаешь значения каждого пиксела и по формуле высчитываешь их объединенное значение.
Для скорости можно через машинный код запилить.

9

Re: AHK: Наложение картинки

Без ассембелера не полетит, а с ним не для простых смертных, ты пишешь на нём?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

10

Re: AHK: Наложение картинки

Тут ассемблер не нужен.
Достаточно базовых знаний c++.

11

Re: AHK: Наложение картинки

Да, вспомнил про что ты, когда то тестил.
А почему ты про Мкод говоришь, на Gdip без перебора пикселей думаешь нет вариантов?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

12

Re: AHK: Наложение картинки

В gdi+ нету, в direct2d есть.

13

Re: AHK: Наложение картинки

serzh82saratov пишет:

А вопрос ты как задал?

Попросил рассказать, как работает матрица в функции GdipSetImageAttributesColorMatrix, а потом рассказать подробнее о каждом значении.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder