Open an image in a GUI
1 次查看(过去 30 天)
显示 更早的评论
Hello guys, I have
[f,p] = uigetfile({'*.png;*.jpg;*.bmp;*.tif','Supported images';...
'*.png','Portable Network Graphics (*.png)';...
'*.jpg','J-PEG (*.jpg)';...
'*.bmp','Bitmap (*.bmp)';...
'*.tif','Tagged Image File (*.tif,)';...
'*.*','All files (*.*)'});
x = imread([p f]);
himage=imshow(x);
title(f)
Which can open an image file and imshow it. My question is: How may i associate it with a button in a GUI ike
uicontrol('String', 'Original',...
'Callback', 'imshow(x);title Original;',...
'Units','normalized',...
'Position',[0 0 .15 .07]);
0 个评论
回答(2 个)
Jan
2013-2-27
编辑:Jan
2013-2-27
You can store the code to select and display the image in the button's callback function:
uicontrol('String', 'Original', ...
'Callback', @myCallback);
function myCallback(ObjectH, EventData)
FigureH = ancestor(ObjectH, 'figure');
[f,p] = uigetfile(...);
x = imread(fullfile(p, f));
himage = imshow(x, 'Parent', FigureH);
title(f)
Sean de Wolski
2013-2-27
figure;
ax = axes;
figure; peaks %another figure
uicontrol('Style','pushbutton',...
'Units','normalized',...
'Position',[0.1 0.1 0.1 0.1],...
'String','Push Me!',...
'Callback',@(~,~)imshow(imread('cameraman.tif'),'parent',ax)); %first axes!!!
Specify the 'Parent' of the image in imshow(). This is explained in a Note in the doc for imshow
Note: If you are building a GUI where you want to control the figure and axes properties, be sure to use the imshow(..., 'Parent', ax) syntax.
2 个评论
Sean de Wolski
2013-2-27
All you have to do is change the string to whatever you selected with uigetfile. I was demonstrating how you put an image on a specific axes, which is what I thought you were having trouble with.
It look slike you have the imread part down so just pull that out of the callback for the pushbutton.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Convert Image Type 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!