Open an image in a GUI

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]);

回答 (2 件)

Jan
Jan 2013 年 2 月 27 日
編集済み: Jan 2013 年 2 月 27 日

0 投票

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)

1 件のコメント

Claire Redfield
Claire Redfield 2013 年 2 月 27 日
Thank you, i have saved the function but for uicontrol('String', 'Original', ... 'Callback', 'myCallback',... 'Units','normalized',... 'Position',[.80 0 .15 .07]); it just doesnt work...

サインインしてコメントする。

Sean de Wolski
Sean de Wolski 2013 年 2 月 27 日

0 投票

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 件のコメント

Claire Redfield
Claire Redfield 2013 年 2 月 27 日
imshow(imread('cameraman.tif') its just read a specific image while i want to open any image i choose, is there any way to do that?
Sean de Wolski
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.

サインインしてコメントする。

タグ

質問済み:

2013 年 2 月 27 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by