cyfile / Matlab-base-toolbox

本人使用Matlab基础工具箱所编写的各种代码
1 stars 0 forks source link

利用java截屏和鼠标操作 #22

Open 213cy opened 4 years ago

213cy commented 4 years ago

robot = java.awt.Robot;
%%
a = get(0,'ScreenSize');
w = 1.25*a(3);
h = 1.25*a(4);
% JavaRectangle = javaObject('java.awt.Rectangle',w,h);
jImage = robot.createScreenCapture(java.awt.Rectangle(w,h));
%%
tic
% aa = typecast( swapbytes( jImage.getRGB(0,0,w, h,[],0,w)) ,'uint8');
% methodsview sun.awt.image.IntegerInterleavedRaster
aa = typecast( swapbytes( jImage.getData.getDataStorage ), 'uint8');
bb = reshape(aa,4,w,h);
cc = permute(bb(2:4,:,:),[3 2 1]);
toc
%imshow(cc)
%%
% jImage.getData.getDataElements(0,0,[])
tic
% 太慢 太慢 太慢 太慢
Im = zeros(h/2,w/2,3,'uint8');
%iRaster = jImage.getData;
for n=1:w/2
    for m=1:h/2
        temp = jImage.getRGB(2*n-1,2*m-1);
        %temp = iRaster.getDataElements(2*n-1,2*m-1,[]);
        aa = cast(temp,'int32');
        a = typecast(aa,'uint8');
        % a = typecast(swapbytes(aa),'uint8');
        Im(m,n,:) = a([3,2,1]);
    end
end
toc
%imshow(Im)

%%
return
%%
% % void keyPress(int keycode) 按下给定的键。
% % void keyRelease(int keycode) 释放给定的键。
% % void mouseMove(int x, int y) 将鼠标指针移动到给定屏幕坐标。
% % void mousePress(int buttons) 按下一个或多个鼠标按钮。
% % void mouseRelease(int buttons) 释放一个或多个鼠标按钮。
% % void mouseWheel(int wheelAmt) 在配有滚轮的鼠标上旋转滚轮。
%%
% pause(3)
robot.mouseMove(300,760); %移动鼠标到指定位置
% robot.mousePress  (java.awt.event.InputEvent.BUTTON1_DOWN_MASK);%鼠标左键按
% robot.mouseRelease(java.awt.event.InputEvent.BUTTON1_DOWN_MASK);%鼠标左键放
robot.mousePress  (1024);%鼠标左键按
robot.mouseRelease(1024);%鼠标左键放
pause(1)
robot.mouseMove(450,760); %移动鼠标到指定位置
robot.mousePress  (1024);%鼠标左键按
robot.mouseRelease(1024);%鼠标左键放
% %
% java.awt.event.KeyEvent.VK_F10
% java.awt.event.KeyEvent.VK_E
pause(1)
robot.keyPress  (121)
robot.keyRelease(121)
robot.keyPress  (70)
robot.keyRelease(70)