La solution donnée par @Jonas, que j'ai déjà upvoted, est vraiment bonne. Permettez-moi de suggérer quelques améliorations mineures afin qu'il traite le cas où le chiffre est redimensionnée:
%# read an image and make it large
img = imread('autumn.tif');
img = repmat(img, [10 10]);
%# new figure
hFig = figure;
%# try show image at full size (suppress possible warning)
s = warning('off', 'Images:initSize:adjustingMag');
imshow(img, 'InitialMagnification',100, 'Border','tight')
warning(s);
%# handle figure resize events
hAx = gca;
set(hFig, 'ResizeFcn',{@onResize,hAx})
%# call it at least once
feval(@onResize,hFig,[],hAx);
%# enable panning tool
pan on
ce qui suit est la fonction de rappel de modification de taille:
function onResize(o,e,hAx)
%# get axes limits in pixels
oldUnits = get(hAx, 'Units'); %# backup normalized units
set(hAx, 'Units','pixels')
pos = get(hAx, 'Position');
set(hAx, 'Units',oldUnits) %# restore units (so it auto-resize)
%# display the top left part of the image at magnification 100%
xlim(hAx, [0 pos(3)]+0.5)
ylim(hAx, [0 pos(4)]+0.5)
end
Vous pourriez sans doute améliorer cette De plus, lorsque vous redimensionnez la figure, vous ne retournez pas toujours dans le coin supérieur gauche, mais maintenez la position actuelle.
avez-vous envisagé d'utiliser [IMTOOL] (http://www.mathworks.com/help/toolbox/images/ref/imtool.html)? – Amro
Je l'ai essayé .. cela fonctionne .. mais je veux 'imshow' pour faire cela en raison de problèmes d'enregistrement en utilisant' print' .. 'imtool' ne me permettra pas d'enregistrer la figure –
question similaire: [MATLAB: montrant une image dans sa taille d'origine] (http://stackoverflow.com/questions/1427602/matlab-showing-an-image-in-its-original-size) – Amro