我想在此代码中添加一个按钮,它会关闭窗口并在旋转时保存图片。
function rotationGUI(a)
I = imread(a);
%# c
hFig = figure('menu','none');
hAx = axes('Parent',hFig);
uicontrol('Parent',hFig, 'Style','slider', 'Value',0, 'Min',0,...
'Max',360, 'SliderStep',[1 10]./360, ...
'Position',[150 5 300 20], 'Callback',@slider_callback)
hTxt = uicontrol('Style','text', 'Position',[290 28 20 15], 'String','0');
%# show image
imshow(I, 'Parent',hAx)
%# Callback function
function slider_callback(hObj, eventdata)
angle = round(get(hObj,'Value')); %# get rotation angle in degrees
imshow(imrotate(I,angle), 'Parent',hAx) %# rotate image
set(hTxt, 'String',num2str(angle)) %# update text
end
function ok_Callback(hObject, eventdata, handles)
set(hTxt, 'String','save')
end
end
答案 0 :(得分:1)
这里和那里几乎没有黑客,这里就是 -
主要功能
function rotationGUI(a)
I = imread(a);
%# c
hFig = figure('menu','none');
hAx = axes('Parent',hFig);
hTxt = uicontrol('Style','text', 'Position',[290 28 20 15], 'String','0');
uicontrol('Parent',hFig, 'Style','slider', 'Value',0, 'Min',0,...
'Max',360, 'SliderStep',[1 10]./360, ...
'Position',[150 5 300 20], 'Callback',{@slider_callback,I,hAx,hTxt,hFig})
uicontrol(hFig,'Style','pushbutton','String','Save and Close',...
'Position',[10 20 120 40],'Callback',{@ok_Callback,I,hTxt,hFig});
%# show image
imshow(I, 'Parent',hAx)
%# Callback function
return;
相关功能-1
function slider_callback(hObj, eventdata,I,hAx,hTxt,hFig)
global Irot
angle = round(get(hObj,'Value')); %# get rotation angle in degrees
Irot = imrotate(I,angle);
imshow(Irot, 'Parent',hAx) %# rotate image
set(hTxt, 'String',num2str(angle)) %# update text
return;
相关功能-2
function ok_Callback(hObj, eventdata,I,hTxt,hFig)
global Irot
set(hTxt, 'String','save')
[filename, pathname] = uiputfile('*.jpg', 'Save Image as');
imwrite(Irot,strcat(pathname,filename));
delete(hFig);
return;
修改1:如果您想将旋转的图像保存为原始图像(即覆盖它),请使用以下更改 -
编辑功能rotationGUI
-
uicontrol(hFig,'Style','pushbutton','String','Save and Close',...
'Position',[10 20 120 40],'Callback',{@ok_Callback,I,hTxt,hFig,a});
编辑功能ok_callback
-
function ok_callback(hObj, eventdata,I,hTxt,hFig,path1)
global Irot
set(hTxt, 'String','save')
imwrite(Irot,path1);
delete(hFig);
end