Как сохранить конструктор приложений GUI - MATLAB - PullRequest
3 голосов
/ 04 августа 2020

Я пытаюсь сохранить все GUI во время его работы с помощью кнопки (на основе конструктора приложений). Я использовал gca, и, как и ожидалось, он сохраняет только оси (используя gcf, в результате получается белое изображение), есть идеи, как это решить? и как я блокирую отображение рисунка 1?

code:

function saveGUIButtonPushed(app, event)
        guiImage = gca;
        exportgraphics(guiImage,'E:/screenExportgraphics.tif','Resolution',500)
        disp('done');
    end

Ответы [ 3 ]

2 голосов
/ 16 августа 2020

Я не заслуживаю похвалы, так как это ответ от MATLAB Answers https://www.mathworks.com/matlabcentral/answers/410919-capturing-and-saving-an-image-of-a-running-using-code-in-matlab-s-appdesigner

Код:

            robot = java.awt.Robot();
            pos = [0 0 1680 1050]; % [left top width height]
            rect = java.awt.Rectangle(pos(1),pos(2),pos(3),pos(4));
            cap = robot.createScreenCapture(rect);
            % Convert to an RGB image
            rgb = typecast(cap.getRGB(0,0,cap.getWidth,cap.getHeight,[],0,cap.getWidth),'uint8');
            imgData = zeros(cap.getHeight,cap.getWidth,3,'uint8');
            imgData(:,:,1) = reshape(rgb(3:4:end),cap.getWidth,[])';
            imgData(:,:,2) = reshape(rgb(2:4:end),cap.getWidth,[])';
            imgData(:,:,3) = reshape(rgb(1:4:end),cap.getWidth,[])';
            % Show or save to file
            imshow(imgData)
            imwrite(imgData,'I:/screenCap.tif', 'Resolution', 500)

Это вариант экрана захвата, который работает очень хорошо, просто увеличьте свой windows.

0 голосов
/ 16 августа 2020

Чтобы преобразовать ваш файл Matlab, вам необходимо загрузить данные из .mat в Matlab, а затем вы можете преобразовать их в .tif файл.

пусть данные будут ваша матрица и xmin , xmax , ymin , ymax должны быть минимальной и максимальной долготой и широтой соответственно. Вы можете преобразовать эти данные в файл .tif, используя:

% Write the data into geotiff 
R = georasterref('RasterSize',size(data),'LatitudeLimits',[ymin,ymax],'LongitudeLimits',[xmin,xmax]);
geotiffwrite('myfile.tif',data,R)
%%Read geotiff file
[A, R] = geotiffread(tiffile);
figure
mapshow(A, R)

Это должно решить вашу проблему.

0 голосов
/ 16 августа 2020

Вы можете сохранить и загрузить свой файл, выполнив следующие действия:

  1. Сохраните значение в функции обратного вызова CloseRequestFcn для вашего приложения в MAT. ссылка на документацию Matlab доступна здесь .
  2. В функции обратного вызова приложения StartupFcn загрузите значение из файла MAT и установите это значение в поле numeri c. Документацию по функции обратного вызова при запуске App Designer можно найти по следующей ссылке: https://www.mathworks.com/help/matlab/creating_guis/app-designer-startup-function.html
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...