【发布时间】:2015-05-16 08:13:58
【问题描述】:
我要运行以下代码来调整图形窗口上的图像大小。为此,我在脚本文件中编写了这段代码:
%%%f=figure('name','resize','color','w','windowstyle','modal','numbertitle','off','position',[820 110 500 612],'resize','on')
% Removed "'windowstyle','modal'" to allow debug
f=figure('name','resize','color','w','numbertitle','off', ...
'position',[820 110 500 612],'resize','on')
hx=axes('Units','inches');
hax = imread('c.jpg');
imshow('c.jpg')
sli=uicontrol('Style','slider',...
'Min',1,'Max',4,'Value',2,...
'Position',[50 525 400 20],...
'Callback', {@resiz,hax})
y=getappdata(0,'x');
uicontrol('Style','text',...
'Position',[50 555 400 20],...
'String','Resize');
uicontrol('Style','pushbutton',...
'Position',[30 565 100 40],...
'String','Save','Callback',{@save,y});
uicontrol('Style','pushbutton',...
'Position',[200 565 100 40],...
'String','Cancel','Callback',@cancel);
除了上面的代码,我还有一个 resiz() 的函数定义代码,其中嵌套了 save() 和 cancel(),如下所示:
function x=resiz(hObj,event,ax) %#ok<INUSL>
val =get(hObj,'Value');
if val==1
v=256;
else
v=(val-1)*2*256;
end
s=[v v];
ax=imresize(ax,s);
imshow(ax)
setappdata(0,'x',ax);
function save(hObj,event,im)
imwrite(im,'gt.jpg','jpg');
return
function cancel(hObj,event)
close(hObj);
return
%%%return;
我已经通过 setappdata 和 getappdata 但找不到任何解决方案。谁能帮我解决这个问题。
【问题讨论】:
标签: matlab image-processing uicontrol