Why does IMWRITE produce an empty image when I try to save a figure to the disk folder?
10 views (last 30 days)
Show older comments
I currently have a MATLAB figure that has a button to allow the user to save that image to the folder. I would like when the user clicks on the button, the save dialog window to appear so that the user can specify the name, type and location.
From the search that I did in here, I think I need to use uiputfile and imwrite to accomplish this. I tried the code below which is called when the user click on the save button but it saves an empty image. fh3 is the handle for the figure.
function pbsave_callback(source, eventdata, fh3)
[files, path, index] = uiputfile({'*.jpg';'*.gif';'*.*'},'Save As');
imwrite(fh3, files, 'jpg');
end
0 Comments
Accepted Answer
Jan
on 7 Feb 2011
IMWRITE needs an array containing the captured pixels as input, not the figure handle:
function pbsave_callback(source, eventdata, fh3)
[FileName, FilePath] = uiputfile({'*.jpg';'*.gif';'*.*'},'Save As');
File = fullfile(FilePath, FileName);
Img = getframe(fh3);
imwrite(Img.cdata, File, 'jpg');
I've used FULLFILE to consider the chosen folder.
EDITED: "FileName" -> "File", 1 output for GETFRAME - omit support of Matlab 5.3
2 Comments
Jan
on 7 Feb 2011
@S: I've fixed the FileName typo. Using GETFRAME with 2 outputs and catching an empty Map supports indexed colors of Matlab R11. I'll remove this immediately and hope, that this does not affect too many readers...
More Answers (2)
Walter Roberson
on 7 Feb 2011
imwrite() writes a matrix of data as an image. It is taking your fh3 as a single 1 x 1 pixel of image data.
Use saveas() to copy figures to image files.
0 Comments
S
on 7 Feb 2011
2 Comments
Walter Roberson
on 7 Feb 2011
What Units are you using for the controls?
When you saveas() or print() the figure PaperPosition and PaperPositionMode take effect, with an effective resize operation.
I recommend you use the matlab file exchange contribution "export_fig"
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!