본문 바로가기
반응형

이미지맥스 그리고 루아(lua)42

[이미지맥스] 숫자에 콤마나 소수점, 슬래쉬가 있을때 OCR 정확도를 높히는 방법 이미지맥스는 OCR을 이용해 문자를 인식하는 기능을 내장하고있습니다. 설정만 잘해주면 유용하게 써먹을수 있지만 어느정도 한계도 존재합니다. 이번에는 숫자사이에 특수문자(콤마, 소수점, 슬래쉬) 등이 있을 경우 대처 할수있는 방법을 알아봅니다. 1. 소수점이 있는 경우 다음과 같은 숫자를 OCR을 이용하여 읽어오고자 합니다. 평소에 하듯이 숫자를 OCR 영역으로 지정하여 읽어보니 소숫점을 인식 못하고 100011 로 인식해버리는군요. 이로 인해 원래 숫자보다 너무 큰 숫자가 되어버렸습니다. 이런경우 어떻게 해야 좋을지 고민해봅니다. [방법1] 특수문자를 인식하기위해 한글, 영문을 함께 체크한다. 숫자만 체크할 경우 콤마(,), 소숫점(.), 슬래쉬(/) 등을 인식할수 없습니다. 대부분의 경우는 한글, 영문.. 2022. 4. 27.
[이미지맥스] LD앱플레이어 제어용 GUI 및 lua함수 스크립트 이미지맥스를 이용하여 LD앱플레이어 같은 앱플레이어를 활용하는 경우가 많을것 같습니다. LD앱플레이어에서 제공하는 콘솔명령어를 활용하여 이미지맥스에서 앱플레이어를 제어할수 있는 기능을 공유합니다. LD앱플레이어 콘솔 명령어 : https://kr.ldplayer.net/blog/an-introduction-to-ldplayer-command-line-interface.html - 이미지맥스의 GUI를 이용하여 LD앱플레이어의 실행, 종료 그리고 재시작을 컨트롤 할수있습니다. - 이미지맥스를 실행하면 앱플레이어 및 지정앱을 자동실행 할수 있도록 옵션을 제공합니다. 1. 앱플레이어 경로 설정 본인의 PC에 설치된 LD 앱플레이어의 설치 경로를 앱플레이어 경로에 작성합니다. 설치 된 .. 2022. 4. 24.
[이미지맥스] 초간단 멀티이미지인식을 이용한 이미지인식후 특정영역 클릭 이미지맥스는 기본적인 기능만으로도 꽤나 많은걸 구현할수 있는 자동화툴입니다. 이미지를 인식하여 특정영역을 랜덤좌표 클릭하는 방법을 알아봅니다. step1. 클릭영역 지정하기 클릭영역을 원하는 만큼 이미지 추가하여 지정합니다. step2. 인식이미지 추가하기 인식후 작업을 시작할 이미지를 추가합니다. 이 이미지를 동작하는 키로 인식하면 클릭영역을 클릭하도록 만들것입니다. step3. 클릭영역에 멀티이미지 설정하기 클릭영역 이미지는 동작을 하도록 체크를 해두고 인식용이미지는 동작하지않도록 체크를 해제합니다. 클릭영역 이미지에 멀티이미지인식 액션을 추가합니다. 동작방식은 인식이미지가 인식 성공시 동작하도록 꾸밀것이므로, 멀티이미지 선택창에서 인식이미지를 성공시 동작하도록 설정합니다. 그리고 멀티이미지 액션을 .. 2022. 3. 29.
[이미지맥스] 인식 화면의 영역을 지정하여 변화율 비교하기 (객체지향) -- 스크린 영역 클래스 생성 screen = {} function screen:new(x0, y0, x1, y1) -- 인스턴스 생성, 메타테이블, __index self 참조지정 local instance = setmetatable({}, self) self.__index = self -- 스크린좌표 파라미터 기본값 정의 (기본값:(0,0),(1280,720)) local x0 = x0 or 0 local y0 = y0 or 0 local x1 = x1 or 1280 local y1 = y1 or 720 -- 스크린 ROI 설정 instance.x = x0 instance.y = y0 instance.w = x1 - x0 instance.h = y1 - y0 instance.roi = {instanc.. 2022. 3. 26.
[lua] 클래스 Class (객체지향 프로그래밍) 루아에서 테이블은 기능이 아주 강력합니다. 간단하게는 리스트에 데이터 배열을 만들수도 있고, key를 지정하여 딕셔너리형으로 데이터를 관리할수도 있으며, 함수를 정의할수도있습니다. 그리고 루아에서도 self 를 자기 자신을 지정할수있습니다. 테이블내에서 함수를 정의할때 . 이 아닌 : 로 선언하고, 함수 호출도 : 을 사용하면 self로 자기 자신을 매개변수로 받을수 있게 됩니다. 또 테이블의 행동을 정의할수 있는 metatable을 정의하면 원하는 연산동작을 지정할수 있게 됩니다. 이를 활용하면 일종의 객체지향 클래스를 루아에서도 구현할수 있습니다. 1. 부모 클래스 -- 부모 클래스 선언 Person = {} function Person:new(name, age) local instance = set.. 2022. 3. 26.
[이미지맥스] 내장함수 GetImageROI()를 활용하여 인식화면의 사이즈, 모니터의 해상도를 확인하는 방법 화면의 해상도에 맞추어 이미지를 가변 하고 싶으셨나요? 그런데 이미지맥스로는 해상도를 알수가 없으셨다고요? 이제 그런 고민을 하지 않으셔도 됩니다. 이미지맥스에서도 스크린의 해상도를 알수 있습니다. 1. 이미지를 생성하고 인식범위를 '전체' 로 설정하기 우선 아무 1픽셀 이상의 이미지를 생성합니다. 그리고 인식범위를 '전체'로 설정합니다. 인식범위에 '전체' 라고 직접 키보드로 작성하여도되고, 혹은 ROI 버튼을 눌른후 Ctrl + A 버튼을 눌러 스크린이나 인식화면 전체를 ROI 영역으로 설정합니다. 2. ROI 취득함수(GetImageROI) 를 이용하여 ROI가 전체인 이미지의 인식범위를 취득하기 screen = GetImageROI('screen') print(screen.w, screen.h) .. 2022. 3. 18.
[이미지맥스] 특정 이미지를 인식후 특정 횟수 반복동작 하기 이미지맥스는 화면상의 이미지를 인식하여 원하는 동작을 수행 하도록 자동화 프로그램을 만들수 있는 툴입니다. 특정한 이미지를 인식후 특정 횟수를 반복하는 동작을 하는 방법 2가지를 알아보겠습니다. 액션이미지를 역순으로 배치하여 인식 활성/비활성을 활용하여 동작을 카운트하는 방법 이미지 활성/비활성 기능을 이용하면 특정 이미지를 인식 후 다음 동작을 제어할수있습니다. 원하는 이미지를 인식 성공시 다음으로 찾을 이미지를 활성하고 자기 이미지는 비활성 하여 점차 진행하는 방법으로 순서대로 동작하는 순차동작을 꾸밀수 있는것입니다. 이를 활용하여 특정 횟수를 반복하게 꾸밀수도 있는데, 위에서 아래로 이미지 인식 처리를 하는 이미지맥스의 특성을 이용하여 액션 이미지를 역순으로 배치하여 인식 활성 하도록 하면 파도 타.. 2022. 3. 13.
[이미지맥스] 특정 이미지를 인식 후 동작하는 방법 2가지 이미지맥스는 화면상의 이미지를 인식하여 원하는 동작을 수행 하도록 자동화 프로그램을 만들수 있는 툴입니다. 특정한 이미지를 인식후 차례로 순차 동작을 하는 방법 2가지를 알아보겠습니다. 1. 이미지 인식 활성/비활성 기능을 이용하는 방법 이미지 활성/비활성 기능을 이용하면 특정 이미지를 인식 후 다음 동작을 제어할수있습니다. 원하는 이미지를 인식 성공시 다음으로 찾을 이미지를 활성하고 자기 이미지는 비활성 하여 점차 진행하는 방법으로 순서대로 동작하는 순차동작을 꾸밀수 있는것입니다. 예를들어 '별', '원', '네모', '세모' 4개의 이미지를 이용하여 '별' 이미지를 인식하면 '원' -> '네모' -> '세모' 이미지를 순차적으로 클릭 하는 동작을 꾸민다고 하였을시 '별' 이미지를 인식하면 '원' 이미.. 2022. 3. 13.
[이미지맥스] 지정영역을 자동으로 분할한 ROI 테이블 만들기 makeRoi() -- ROI 생성 함수 : 영역 설정(sx, sy, ex, ey), 이미지 ROI 사이즈(img_w, img_y) function makeRoi(_sx, _sy, _ex, _ey, _img_w, _img_h) print('==================================================') print('>> ROI를 생성합니다.') -- 서치할 영역의 폭(x), 높이(h) 계산 local width = _ex - _sx local height = _ey - _sy print('width : '..width, 'height : '..height) -- 서치할 영역 분할 갯수 (서치 영역의 폭 / 검색 거리 간격) local width_split = (width / _img_w) -.. 2022. 2. 19.
[이미지맥스] 한번에 여러 이미지를 클릭하는 함수 clickImage(...) -- 이미지 클릭 함수 function clickImage(...) local result_table = {} for key, value in pairs({...}) do local ret, acc, ix, iy, sx, sy = ImageSearch(value) if ret == 1 then table.insert(result_table, true) print('clickImage() : '..value..' [ '..ix, iy, sx, sy..' ]') -- 랜덤 좌표 생성 local rx = ix - sx local ry = iy - sy local rx = math.random(-rx, rx) local ry = math.random(-ry, ry) -- 클릭 좌표 랜덤값 적용 local ix .. 2022. 2. 12.
[이미지맥스] 한번에 여러 이미지를 서치하여 boolean으로 반환 함수 isImage(...) -- MultiImage() 이미지서치 통합 함수 (결과 boolean 반환) function isImage(...) local result_table = {} for key, value in pairs({...}) do if MultiImage(value) == 1 then table.insert(result_table, true) else table.insert(result_table, false) end end return table.unpack(result_table) end 그동안 이미지맥스를 활용하면서 이미지 서치의 결과를 boolean 으로 반환 받기 위해 여러 형태로 isImage() 라는 함수를 만들어가면서 사용해왔습니다. 이번에는 이전에 만들었던 형태보다 간결하면서도 또한 강력한 기능인.. 2022. 2. 12.
[이미지맥스] GUI에 데이터를 표시하고 업데이트 하는 방법 이미지맥스에 추가된 GUI 기능을 활용하면 로그창을 이용한 피드백보다 보다 직접적으로 데이터를 한눈에 보이게 꾸밀수 있습니다. 가령 OCR로 읽은 문자나 숫자를 GUI에 표시하는 것처럼 말이죠. 그럼 간단하게 OCR로 읽은 데이터를 GUI상에 표시하고 업데이트 하는 방법을 알아봅니다. 1. 메인 GUI 생성 우선 그룹을 만들어 OCR 데이터를 표시할 구획 영역을 할당해 줍니다. 어느정도 적당히 대충 만들고 그안을 텍스트와 데이터를 표시할 에디트로 채워봅니다. ※ GUI 생성시 미립자 팁:: GUI를 만들때 그룹을 생성한 좌표를 기준으로 x, y좌표에 상대적인 수치를 더하여 Text, Edit, Button, Radio 등을 생성하면 추후에 GUI를 수정이 필요하여 움직여야할때 그룹의 좌표만 옮겨주면 그룹.. 2022. 2. 7.
[이미지맥스] GUI 기능을 활용한 간단한 사용/미사용 옵션 만들기 이미지맥스에 GUI 를 생성할수 있는 함수들이 추가되었습니다. GUI는 사전처리스크립트 (PreScript)에 코드를 작성하여 불러오는 방법으로 사용합니다 이를 활용하는 방법은 많지만 가장 간편하게 이용할만한 활용법이 동작중 이미지의 사용/미사용 변경 입니다. 왜냐하면 이미지맥스가 START 되어 동작중에는 이미지의 인식상태를 변경할수가 없으니까요. 이를 GUI를 생성하여 EnableImage() 함수와 함께 활용한다면 동작중에도 이미지의 인식 여부를 간편하게 변경할 수 있습니다. 1. 메인 GUI 생성 우선 메인 GUI를 생성합니다. 이미지맥스에 생성되는 메인 GUI에는 다이얼로그 윈도우를 생성하는 GUIAddButton() 버튼를 생성합니다. 이때 GUIAddGroup() 으로 그룹을 생성하여 비슷한.. 2022. 2. 6.
[lua] 루아에서 윈도우 앱을 실행하는 방법 os.execute() 루아에서 특정 앱을 실행하려면 os.execute() 함수를 사용합니다. os.execute('start "" "실행파일경로"') 함수의 인수에 'start "" ' 커맨드 코드 이후 실행하려는 윈도우 앱의 경로나 이름을 기입하면 실행이 됩니다. -- 그림판을 실행하는 예시 app_path = '"mspaint"' os.execute('start "" '..app_path) -- 메모장을 실행하는 예시 app_path = '"notepad"' os.execute('start "" '..app_path) -- 계산기을 실행하는 예시 app_path = '"calc"' os.execute('start "" '..app_path) 윈도우의 기본앱들은 위의 예시처럼 앱의 이름만으로도 실행이 가능합니다. 마치 실.. 2021. 9. 20.
[lua] 함수 정의시 인수의 기본값 지정하는 방법 lua로 스크립트 코딩을 하면서 함수의 정의는 필수적으로 하게됩니다. 그런데 함수를 사용할때 꼭 인수를 지정하지 않더라도 기본값을 바인딩하여 자동으로 실행되게 하고 싶은 경우가 있습니다. # 파이썬의 경우 def hello(name, greeting = 'nice to meet you'): print(name, greeting) # 샘플 hello('gildong') # >> gildong, nice to meet you. hello('youngmi', 'how old are you?') # >> youngmi, how old are you? 파이썬의 경우 함수의 인수를 정의할때 기본값을 정의해두면 됩니다. 하지만 루아에서는 파이썬과 같이 해버리면 즉시 컴파일 오류가 발생하게 됩니다. 루아에서는 두가지 .. 2021. 8. 3.
[이미지맥스] 마우스를 클릭한 상태를 유지 하는 방법 MouseDown(), MouseUp() 이미지맥스를 이용하여 자동화 툴을 제작하며 마우스 클릭을 누른체 유지해야 하는 경우가 있습니다. 이경우 lua 스크립트의 내부함수 Mouse() 의 DOWN, UP 인수를 활용하여 해당 동작을 꾸밀수 있습니다. -- 마우스 좌버튼 누름 함수 function mouseDown(ix, iy, rx, ry, ms) local rx = rx or 0 local ry = ry or 0 local rx = math.random(-rx, rx) local ry = math.random(-ry, ry) local ix = ix + rx local iy = iy + ry local ms = ms or 0 Mouse(LBUTTON, DOWN, ix, iy) if ms > 0 then Sleep(ms) Mouse(LBUTT.. 2021. 8. 2.
[이미지맥스] 테이블로 나열한 여러 이미지를 서치 혹은 클릭하는 함수 isTable(), clickTable() 2021.03.29 - [이미지맥스, lua/이미지맥스 ImageMax] - [이미지맥스] ImageSearch()의 결과값을 boolean 값으로 받기 2021.07.18 - [이미지맥스, lua/이미지맥스 ImageMax] - [이미지맥스] 여러 이미지검색 결과를 boolean 값으로 받기 (isImage()함수mk.2) 2021.05.04 - [이미지맥스, lua/이미지맥스 ImageMax] - [이미지맥스] 루아 내부함수를 응용해보자! -4- (clickImage()함수) 계속해서 이미지의 검색 결과를 boolean 값으로 리턴 받는 방법에 대해 연구하고있습니다. 이번에도 동일하게 MultiImage() 함수를 활용하여 테이블 형태로 검색할 이미지를 나열하여 일괄적으로 찾을수 있는 방법에 대해 연.. 2021. 7. 18.
[이미지맥스] MultiImage() 결과값을 boolean 값으로 받기 isImage() 2021.03.29 - [이미지맥스, lua/이미지맥스 ImageMax] - [이미지맥스] ImageSearch()의 결과값을 boolean 값으로 받기 이전 글에서 ImageSearch() 함수를 이용하여 이미지 검색 결과를 0 혹은 1이 아닌 참(true) 혹은 거짓(false) 으로 리턴받아 if조건문에서 보다 간결하게 사용할수 있는 방법을 알아보았었습니다. 그러나 이러게 해도 여러개의 이미지를 AND 혹은 OR 조건으로 검색시 마찮가지로 함수를 여러번 사용하여 논리회로를 구성해야하기 때문에 코드가 길어지는 결과를 낳게 됩니다. 이렇게 이미지를 여러개 동시에 검색해야 하는 경우 가장 알맞는 기능을 이미지맥스에서는 이미 제공하고있습니다. 바로 MultiImage() 멀티이미지검색 함수입니다. 과거에 .. 2021. 7. 18.
[lua] 랜덤 시간 예약 설정 함수 setTime() -- 랜덤 시간 설정 (현재 시간 ~ 23시 59분 59초 중 랜덤한 시간 반환) function setTime() math.randomseed(os.time() + math.random(0, 65535)) local date = os.date('*t') local set_time = {hour = math.random(date.hour, 23), min = math.random(date.min, 59), sec = math.random(date.sec, 59)} print('set Time : [ '..set_time.hour..'h', set_time.min..'m', set_time.sec..'s ]') return set_time end -- > 리턴값 : {hour, min, sec} key를 .. 2021. 7. 12.
[이미지맥스] 인식 화면의 정지 여부 (앱동작정지) 를 검출하는 방법 -- 시스템 클럭을 이용한 딜레이 설정 함수 function setClock() return os.clock() end function getClock(_clock) if _clock ~= nil then return os.clock() - _clock else print('getClock() ERROR : _clock is null') end end -- print('========================================') -- print('화면 정지 비교 프로그램 ver.220509') -- print('========================================') -- 앱 동작 정지 감시 유사도, 판단 시간, 검사 간격 설정 STOP_JUDGE_ACC = 98 --.. 2021. 7. 10.
[이미지맥스] 앱플레이어 hwnd 윈도우핸들 취득 방법 FindWindow(), FindWindowEx(), PostMessage(), SendMessage(), WM_MESSAGE -- 블루스택5 윈도우 핸들 취득 hwnd1 = FindWindow('Qt5154QWindowOwnDCIcon', 'BlueStacks') hwnd2 = FindWindowEx(hwnd1, '', 'plrNativeInputWindowClass', 'plrNativeInputWindow') hwnd3 = FindWindowEx(hwnd2, '', 'BlueStacksApp', '_ctl.Window') -- LD앱플레이어 윈도우 핸들 취득 hwnd1 = FindWindow('LDPlayerMainFrame', caption) hwnd2 = FindWindowEx(hwnd1, '', 'RenderWindow', 'TheRender') hwnd3 = FindWindowEx(hwnd2, '', 'subWin'.. 2021. 7. 10.
[lua] 시간 설정 및 경과 확인 함수 getClock() setClock() 2021.05.10 - [이미지맥스, lua/루아 lua] - [lua] 루아에서 sleep() 함수를 구현하기 지난 시간에 sleep()를 만들어 보았습니다. sleep() 함수의 단점이라면 시간지연을 하는 동안 다른 동작을 할수가 없이 무조건 모든 동작이 멈춘상태로 시간을 보내야 한다는 점인데요. 여기서 sleep() 과는 다른 방법으로 동작을 지연시킬 방법을 생각해 보았습니다. 실행할 시간을 지정해서 현재 시간과 비교하여 원하는 시간이 지나면 동작하게 꾸미는것이 바로 그것이죠. 시간을 설정하기 때문에 sleep() 과는 달리 설정한 시간이 되기 전까지는 다른 동작도 동작하게 할수 있는 장점이 있습니다. 구현 방안은 현재 시점에 시간을 설정하고, 시간이 흐른뒤 설정한 시간과 비교하여 차값를 구해 얼마.. 2021. 5. 12.
[lua] 루아에서 sleep() 함수를 구현하기 다른 언어에서 통상적으로 지원하는 시간지연딜레이 함수인 sleep() 을 루아에서는 직접 함수를 만들어 구현해야합니다. os라이브러리의 프로그램 구동시간을 리턴해주는 os.clock() 함수를 이용하여 쉽게 구현할수 있습니다. os.clock() 함수는 프로그램의 구동시간을 초단위로 실수값 형태로 반환을 해줍니다. 가령 프로그램이 동작한지 10초가 지났다면 10.000 으로 반환 값이 돌아옵니다. 이를 통해 sleep() 함수를 실행했을때의 클럭과 지정한 시간이 경과한 후 클럭의 차를 구하면 경과한 시간을 알수 있게되어 while 반복문을 이용하거나 until 반복문 이용하면 딜레이 동작을 구현할수 있습니다. 1. 시간지연을 초(sec) 단위로 설정하여 슬립 동작을 구현하는 경우 -- 초단위 Sleep .. 2021. 5. 10.
[이미지맥스] 이미지를 서치하여 클릭하는 함수 clickImage() 이미지맥스는 루아용 스크립트 내부함수를 내장하고있습니다. 내장함수는 공식카페(cafe.naver.com/imagemax/302) 에서 확인할수 있습니다. 내장 함수를 활용하여 다양한 동작을 꾸밀수 있습니다만, 사소하지만 보다 편리하게 쓸수 있는 방법을 또 생각해봤습니다. 저의 경우 비주얼스튜디오코드(VSC)를 이용해서 코드를 작성하는데, 이미지맥스의 내장함수들은 제가 작성중인 코드 워크스페이스에 정의된 함수블럭이 없다보니 인수를 뭘 넣어야 하는지 헬프창이 뜨지 않아 항상 내장함수를 찾아봐야 한다는 단점 아닌 단점이 발생하는 것입니다! 물론 자주 쓰는 함수들은 이미 외워버렸지만요. 더더욱이 아주 많이 쓰는 마우스클릭이나 이미지검색같은 함수들을 매번 인수를 다 넣자니 약간 귀차니즘이 발동하는것입니다. 그래서.. 2021. 5. 4.
[이미지맥스] 지정영역을 랜덤하게 클릭하는 함수 clickArea() 이미지맥스는 루아용 스크립트 내부함수를 내장하고있습니다. 내장함수는 공식카페(cafe.naver.com/imagemax/302) 에서 확인할수 있습니다. 내장 함수를 활용하여 다양한 동작을 꾸밀수 있습니다만, 사소하지만 보다 편리하게 쓸수 있는 방법을 또 생각해봤습니다. 저의 경우 비주얼스튜디오코드(VSC)를 이용해서 코드를 작성하는데, 이미지맥스의 내장함수들은 제가 작성중인 코드 워크스페이스에 정의된 함수블럭이 없다보니 인수를 뭘 넣어야 하는지 헬프창이 뜨지 않아 항상 내장함수를 찾아봐야 한다는 단점 아닌 단점이 발생하는 것입니다! 물론 자주 쓰는 함수들은 이미 외워버렸지만요. 더더욱이 아주 많이 쓰는 마우스클릭이나 이미지검색같은 함수들을 매번 인수를 다 넣자니 약간 귀차니즘이 발동하는것입니다. 그래서.. 2021. 5. 3.
[이미지맥스] ImageSearch()결과를 활용하여 클릭하는 함수 clickResult() 이미지맥스는 루아용 스크립트 내부함수를 내장하고있습니다. 내장함수는 공식카페(cafe.naver.com/imagemax/302) 에서 확인할수 있습니다. 내장 함수를 활용하여 다양한 동작을 꾸밀수 있습니다만, 사소하지만 보다 편리하게 쓸수 있는 방법을 또 생각해봤습니다. 저의 경우 비주얼스튜디오코드(VSC)를 이용해서 코드를 작성하는데, 이미지맥스의 내장함수들은 제가 작성중인 코드 워크스페이스에 정의된 함수블럭이 없다보니 인수를 뭘 넣어야 하는지 헬프창이 뜨지 않아 항상 내장함수를 찾아봐야 한다는 단점 아닌 단점이 발생하는 것입니다! 물론 자주 쓰는 함수들은 이미 외워버렸지만요. 더더욱이 아주 많이 쓰는 마우스클릭이나 이미지검색같은 함수들을 매번 인수를 다 넣자니 약간 귀차니즘이 발동하는것입니다. 그래서.. 2021. 5. 2.
[이미지맥스] 마우스 클릭을 조금만 더 간편하게! click() 이미지맥스는 루아용 스크립트 내부함수를 내장하고있습니다. 내장함수는 공식카페(cafe.naver.com/imagemax/302) 에서 확인할수 있습니다. 내장 함수를 활용하여 다양한 동작을 꾸밀수 있습니다만, 사소하지만 보다 편리하게 쓸수 있는 방법을 또 생각해봤습니다. 저의 경우 비주얼스튜디오코드(VSC)를 이용해서 코드를 작성하는데, 이미지맥스의 내장함수들은 제가 작성중인 코드 워크스페이스에 정의된 함수블럭이 없다보니 인수를 뭘 넣어야 하는지 헬프창이 뜨지 않아 항상 내장함수를 찾아봐야 한다는 단점 아닌 단점이 발생하는 것입니다! 물론 자주 쓰는 함수들은 이미 외워버렸지만요. 더더욱이 아주 많이 쓰는 마우스클릭이나 이미지검색같은 함수들을 매번 인수를 다 넣자니 약간 귀차니즘이 발동하는것입니다. 그래서.. 2021. 5. 2.
[이미지맥스] 에서 루아를 다룰때 참고할만한 레퍼런스 매뉴얼 이미지맥스는 이미지검색 기반으로 자동화 매크로를 제작할수 있는 편리한 툴입니다. 특히 '루아(lua)' 언어를 내부 스크립트 언어로 채용하여 더더욱 편리하게 각종 기능들을 구현할수 있습니다. 이미지맥스에 탑재된 루아는 버전 5.4로 스크립트에 출력함수를 이용하여 루아의 버전을 확인해볼 수 있습니다. print(_VERSION) -- > Lua 5.4 루아는 현재 최신버전이 5.4.4 버전 까지 나와있습니다. 이미지맥스에 탑재된 루아는 5.4버전으로 버전마다 지원하는 기능과 내부 라이브러리가 차이점이 발생할수 있습니다. 사용하는 버전에 맞는 기술자료를 참고 하는게 가장 좋겠죠. 루아의 공식홈페이지(www.lua.org) 에서 제공하는 레퍼런스 매뉴얼(www.lua.org/manual/5.4) 을 참조하면 .. 2021. 5. 1.
[lua] 랜덤한 문자열 생성하기 -2- (함수화) 2021.04.24 - [이미지맥스, lua/루아 lua] - [lua] 루아에서 랜덤한 문자열을 생성하기 앞서 랜덤한 문자열을 정해진 규칙에 따라 생성해보았습니다. 가령 문자 10자 + 숫자 3자 같은 방법으로 말이죠. 이에 문자열 자동 생성을 보다 더 랜덤한 규칙으로 생성하고 싶어졌습니다. 대문자, 소문자, 숫자 캐릭터를 생성하는 부분을 각각 함수화 하고 이 함수를 랜덤으로 실행하는 방법을 통해 랜덤한 문자가 포함된 테이블을 생성합니다. 이렇게 생성한 테이블에 저장된 문자(캐릭터)들을 조합하여 문자열(스트링)으로 만들어주면 완료입니다! -- Make Random String -- 대문자 생성 function.. 2021. 4. 26.
[lua] 랜덤한 문자열 생성하기 -1- (기본편) 2021.04.26 - [이미지맥스, lua/루아 lua] - [lua] 루아에서 랜덤한 문자열 생성하기 -2- (함수화) 1. 루아에서 문자열 합치기 루아에서는 문자열과 문자열 사이에 .. 를 넣어주면 문자열이 합쳐집니다. 다음과 같이 테이블에 'a', 'b', 'c', 'd' 라는 문자열이 있다고 가정하고 이를 합쳐보겠습니다. chars = {'a', 'b', 'c', 'd'} new_string = chars[1]..chars[2]..chars[3]..chars[4] print(new_string) -- > 'abcd' 테이블의 1, 2, 3, 4번 인덱스 문자을 불러와 문자열로 합친것입니다. 각각 문자들이 합쳐져 abcd 가 리턴되는 것을 알 수 있습니다. 2. 테이블의 문자열을 합치기 그럼 테이.. 2021. 4. 24.
반응형