매크로

조회 수 1104 추천 1 댓글 6

우선 본 함수는 Gdip_all.ahk 가 필요함을 말씀드립니다.

Gdip_all.ahk는 아래 주소에서 다운받으실수 있습니다.

https://github.com/marius-sucan/AHK-GDIp-Library-Compilation



/*
 BLACKONWHITE := 1
 제거되거나 존재하는 픽셀의 색상 값을 사용하여 AND 연산자를 수행합니다.
 흑백 비트맵의 경우 흰 픽셀을 훼손시키고 검은 픽셀을 보존합니다.


COLORONCOLOR := 2
 픽셀을 삭제합니다.
 모두 제거된 픽셀 줄의 정보를 보존하지 않고 삭제합니다.

 HALFTONE := 3
 원본 사각형에서 대상 사각형 안의 픽셀 영역으로 픽셀을 보여줍니다. *
 대상 픽셀의 평균 색상을 원본 픽셀 색상으로 근사치로 계산합니다.

 WHITEONBLACK := 4

제거되거나 존재하는 픽셀의 색상 값을 사용하여 OR 연산자를 수행합니다.
 흑백 비트맵의 경우 검은 픽셀을 훼손시키고 흰 픽셀을 보존합니다.
 */
ImageSizeChange(pBitmap,dx,dy,dw,dh,sx,sy,sw,sh,StretchMode=4)
{
    hbm :=  Gdip_CreateHBITMAPFromBitmap(pBitmap)
    hhdc := CreateCompatibleDC()
    obm := SelectObject(hhdc, hbm)
   
    chdc := CreateCompatibleDC(), hbm2 := CreateDIBSection(dw, dh, chdc), obm2 := SelectObject(chdc, hbm2)
   
    SetStretchBltMode(chdc, StretchMode)
    StretchBlt(chdc, dx,dy, dw, dh, hhdc, sx, sy, sw, sh)
    nBitmap := Gdip_CreateBitmapFromHBITMAP(hbm2)
    SelectObject(chdc, obm2), DeleteObject(hbm2), DeleteDC(chdc)
    deleteobject(obm), DeleteObject(hbm),deleteDC(hhdc)
    Gdip_DisposeImage(pBitmap)
    return nBitmap
}


매개변수 설명

pBitmap 변경하고자하는 원본 비트맵

dx 사이즈 변경된 비트맵의 시작위치x

dy 사이즈 변경된 비트맵의 시작위치y

dw 사이즈 변경된 비트맵의 너비

dh 사이즈 변경된 비트맵의 높이

sx 원본 비트맵에서의 시작위치x

sy 원본 비트맵에서의 시작위치y

sw 원본 비트맵에서의 복사할 너비

sh 원본 비트맵에서의 복사할 높이

StretchMode 사이즈 변경 시 픽셀을 카피하는 방법 저도 자세히는 모릅니다.SetStretchBltMode에서 사용되며 이를 사용하지 않을 시 축소시에 그래픽이 깨집니다. 다만 이 함수를 사용시 확대시에 약간 흐려집니다.

경험상 확대시에는 StretchMode 값을 1 축소시에는 4로 놓는 것이 좋습니다.

이상입니다.


버그 및 문의는 댓글 부탁드립니다.


  • 제발등업좀2 2019.11.25 01:04
    진심으로 감사합니다 ^^ ~~ 이렇게 친절하시게!!!! 감사감사 잘응용해보겠습니다.!
  • 할거엄따구 2019.11.25 01:13
    넵 도움이 됐으면 좋겠네요
  • 제발등업좀2 2019.11.25 22:50

    Gdip_all.apk  이게 혹 Gdip_All.ahk 맞는지요? apk는 검색해도 따라오질않기에 한번 여쭈어봅네요  


    Gdip_All.ahk 와  가.bmp 라는 이미지를 같은 폴더에 두고

    아래처럼 .. 했는데 아무런 반응이 없는데 혹 제가 잘못쓰고잇는건지요?

    바쁜시간 쪼개서 이리 알려주셧는데.. 줘도 못먹는것같아 죄송할따름이네요


     f1::
     pBitmap := "가.bmp"


     dx := 1
     dy := 1
     dh := 20
     dw := 31


     sx := 1
     sy := 1
     sh := 40
     sw := 62
     
     가 := ImageSizeChange(pBitmap,dx,dy,dw,dh,sx,sy,sw,sh,1)
     MsgBox,% "가" 가   ; 값이 0
     return
     
    ImageSizeChange(pBitmap,dx,dy,dw,dh,sx,sy,sw,sh,StretchMode=4)
    {
        hbm :=  Gdip_CreateHBITMAPFromBitmap(pBitmap)
     MsgBox,% hbm  ; 값이 0
        hhdc := CreateCompatibleDC()
     MsgBox,% hhdc ; 값이 1565468
        obm := SelectObject(hhdc, hbm)
        MsgBox,% obm ; 값이 0
        chdc := CreateCompatibleDC(), hbm2 := CreateDIBSection(dw, dh, chdc), obm2 := SelectObject(chdc, hbm2)
       
        SetStretchBltMode(chdc, StretchMode)
        StretchBlt(chdc, dx,dy, dw, dh, hhdc, sx, sy, sw, sh)
        nBitmap := Gdip_CreateBitmapFromHBITMAP(hbm2)
        SelectObject(chdc, obm2), DeleteObject(hbm2), DeleteDC(chdc)
        deleteobject(obm), DeleteObject(hbm),deleteDC(hhdc)
        Gdip_DisposeImage(pBitmap)
        return nBitmap
    }

  • 할거엄따구 2019.11.25 23:25
    아...네 ahk 맞습니다. 오타네요 ㅠㅠ 수정하겠습니다
  • 할거엄따구 2019.11.25 23:27

    pBitmap은 Gdip_BitmapFromScreen 또는 Gdip_BitmapFromHWND 또는 Gdip_CreateBitmapFromFile 으로부터 얻는 값입니다.

    파일로부터 얻으시려면 Gdip_CreateBitmapFromFile("가.bmp")로 하시면 됩니다.

  • 할거엄따구 2019.11.25 23:31
    파일로 저장은 Gdip_SaveBitmapToFile로 하시면 됩니다

List of Articles
분류 제목 글쓴이 최근변경 추천
질문 오토핫키로 F5번이나 F6번같은 펑션키 입력이 되게하려면? 2 한평의해안선 2015.03.26 0/0
질문 보더값 및 캡션값??? 10 낭군이 2015.03.26 0/0
질문 성운이님 매크로 nebula 원소교체 문제있지 않나요? 19 감자해커 2023.12.14 1/0
질문 왜 이미지를 찾지 못했는데 다음으로 넘어갈까요?ㅠㅠ(... 6 낭군이 2015.04.13 0/0
질문 오토핫키 어플이 있나요?? 2 그까이꺼 2015.03.25 0/0
질문 이거 30분 짜리 매크로 인데 20분으로 바꿀려면 어딜 ... 6 오목이 2015.03.27 0/0
질문 loop 에서 break 오류가 계속 뜨는데요 5 언제나ing 2015.03.28 0/0
질문 오토핫키 30분 20분마리로 만드는 방법좀 가르쳐주세요 3 오목이 2015.03.25 0/0
질문 [Gui] 이미지가 포함된 편집가능한 테이블 제작 26 Hangoon 2015.03.26 1/0
정보 오핫키 편집 프로그램 SciTE4AutoHotkey 스킨변경및 한... 4 낭군이 2015.03.24 1/0
질문 모비즌으로 비활성이미지클릭 하려고 하는데 잘안되네... 8 낭군이 2015.03.24 0/0
질문 핫키 편집기 scite 글자색상 바꾸고 하는설명있었는데요. 7 우후훅 2015.03.23 0/0
정보 오토핫키 Fileinstall 간단하게 적기. 2 은다 2015.03.25 0/0
질문 또 궁금한것이 있습니다 경과시간 9 소리없이 2015.03.24 0/0
질문 한가지만 더 여쭤보겠습니다. Form load 관련질문~ 1 다람쥐짱 2015.03.23 0/0
자유 오토핫키가 매크로 제작만 될줄알았는데... 7 다람쥐짱 2015.11.03 0/0
질문 오토핫키 GUI관련질문좀드릴게요... 2 다람쥐짱 2015.03.23 0/0
질문 너무궁금합니다 도와주세요!ㅜ숫자새는법 9 소리없이 2015.03.22 0/0
질문 쿠키런 매크로질문.. 1 남동현 2015.03.22 0/0
질문 리스트박스에 모든 목록을 가져오는 방법이 뭐가있을까... 2 yodda 2015.03.21 0/0
Board Pagination Prev 1 ... 176177178179180181182183184 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글