Figure automatically scales by 2
Show older comments
Hi, I set my figure as below:
figure(1)
set(gcf,'units','pixels','position',[0,0,512,512]);
However, the popped figure window has resolution 1024x1024. When I try to get the result as a matrix:
F = getframe (gcf,[0,0,512,512]);
[img, ~] = frame2im (F);
I would like to get img with resolution 512x512x3, but I get its value as 1024x1024x3.
Is there anyway to solve this problem?
4 Comments
xiaojuezi
on 6 Apr 2020
I apologize, I misunderstood the issue! MATLAB is 'DPI-aware' so when you plot your figure, it will be scaled according to your display.
Edit: If you are only concerned with keeping the resolution of img at 512x512, might this work?
newImg = img(1:end/512:end, 1:end/512:end, :);
I'd be surprised if this gave the same result as when you create the figure on your other screen (to be honest I'm not sure, I suppose it depends on how exactly MATLAB utilizes the extra space) but with this you could cherry-pick pixels to create a 512x512 image which at least captures the features of img.
Walter Roberson
on 7 Apr 2020
For
- Windows® systems in which the display dots-per-inch (DPI) value is set higher than 96
- Macintosh systems with Apple Retina displays
When you set the Units property of a graphics or UI object to 'pixels', the size of each pixel is now device-independent on Windows and Macintosh systems:
- On Windows systems, 1 pixel = 1/96 inch.
- On Macintosh systems, 1 pixel = 1/72 inch.
(My Mac happens to be one of the last non-Retina models, so I am not affected by this... which also means that I cannot test work-arounds.)
xiaojuezi
on 11 Apr 2020
Answers (0)
Categories
Find more on Creating, Deleting, and Querying Graphics Objects in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!