MATLAB: GUI Resize Image, but not updating in axes

maker

I'm trying to resize an image, but the image itself within the axes stays the same in the gui no matter what scale factor I input
function upload_Callback(hObject, eventdata, handles)
% hObject handle to upload (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[File, Path] = uigetfile({'*.*';'*.jpg';'*.png';'*.bmp'}, 'Image to be displayed');
filename = [Path, File];
image = imread(filename);
axes(handles.imgframe);
hold off
resize(filename, 4);
function resize(file, factor)
//Above all resize code did not include in the question
//figure();
imshow(img1_nearest);
end
my resize function works on its on when I put it in to a figure, but I'm trying to put the resize image back to the axes to display it. The image size is the same no matter what scale factor I put

Best Answer

imshow() only automatically resizes the figure if the current axes is in the "default" position that would occur if the axes were the only thing in the figure.
imshow() never resizes just an axes by itself.
If you want to fit an axes around an image, then set the InnerPosition to be the same size as image (watch out that X is columns not rows), and set the axes DataAspectRatio to [1 1 1]. This will probably leave a gap around the axes for small images, and will probably cause the axes to overlap your other controls if you display a large enough image.