function browsePushButton_Callback(hObject, eventdata, handles)
% hObject handle to browsePushButton (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% show open file dialog
[filename, pathname] = uigetfile({ '*.jpg'; '*.png';'*.bmp';'*.jpeg'; }, ...
'Open image', ...
'' ...
);
% obtain image-file's path
imagePath = strcat(pathname, filename);
% if the imagePath is not empty...
if (imagePath ~= '')
image = imread(imagePath);
% digging out image related info
[pathstr,name,ext] = fileparts(filename) ;
fileinfo = imfinfo(imagePath);
FileSize1 = fileinfo.FileSize(1,1);
width = fileinfo.Width;
height = fileinfo.Height;
%
axes(handles.imagesPictureBox);
imshow(image);
else
% if the imagePath is empty, display a error message
h = msgbox('Invalid Value', 'Error','error');
end
错误消息
Error using ~=
Matrix dimensions must agree.
Error in OpenFileDialogBoxTest>browsePushButton_Callback (line 91)
if (imagePath ~= '')
Error in gui_mainfcn (line 95)
feval(varargin{:});
Error in OpenFileDialogBoxTest (line 42)
gui_mainfcn(gui_State, varargin{:});
Error in @(hObject,eventdata)OpenFileDialogBoxTest('browsePushButton_Callback',
hObject,eventdata,guidata(hObject))
Error while evaluating UIControl Callback
答案 0 :(得分:2)
您应该使用strcmp
来比较字符串
if ~strcmp(imagePath,'')
...
end
您使用的 not equal 运算符需要两个字符数组具有相同的维度。
编辑:还有两件事
1.)当您使用uigetfile
获取文件和路径信息时,请记住输出可以是数字。当用户取消对话时就是这种情况。你应该抓住这种可能性。
2.)从uigetfile
的输出构造绝对路径的方式是错误的。有一个文件分隔符,即' /'或者' \'失踪。我建议使用imagePath = fullfile(pathname, filename);
代替
答案 1 :(得分:2)
首先,这不是检查字符串是否为空的正确方法。 ~=
operator被设计为在相同长度的数组上以元素方式工作(这些字符串通常不是')。字符串比较通常应使用strcmp
。但是,要检查字符串是否为空,您应该使用isempty
。
...但所有这一切都没有实际意义,因为你不应该像那样检查uigetfile
的输出。当用户取消文件选择时,uigetfile
的输出都设置为0
,因此您的if
语句应如下所示:
if isequal(filename, 0)
% if the imagePath is empty, display a error message
h = msgbox('Invalid Value', 'Error','error');
else
% obtain image-file's path
imagePath = fullfile(pathname, filename); % NOTICE I MOVED THIS INSIDE THE IF STATEMENT!
...
% All the other stuff you want to do
...
end