Saving images in PNG format, as grayscale, without white-spaces.
Ältere Kommentare anzeigen
Hello,
I want to save a grayscale image in png format. I am using
saveas(gcf, outputname1, 'png')
but I keep having two problems: 1. No matter what I do, the saved image always ends up with white space on the sides, as if fitting a predefined space. I have already set the preferences as "tight", both in the "preferences" menu, and also at the beginning of my script with
iptsetpref('ImshowBorder','tight')
Yet, no matter what I do, I keep getting the white space on the sides of the image, but not on the top. I figured it has something to do with how I processed the images before (I did spatial frequency filtering based fft on a rectangular image. I think the image is made "square" for the filtering via padding, but at a later step I undo such padding by resizing the image to its original dimensions, but this does not help to eliminate the white space on the sides.
I know I can crop it, but I would like to understand why is matlab doing this, and how can I prevent it.
2. Also, even though the original image is a grayscale, when I save using saveas, I always end up with a RGB image. I tried other commands (imwrite, hgwrite, print, etc.), and while they (do save the images in grayscale, often the results are very distorted (darker, sometimes sharper or with a higher contrast). I have found that saveas does save the image exactly as it is displayed in matlab (which is what I need), except for the fact that it ends up as an RGB image.
Thanks in advance to whomever can help me understand and fix this!
So far, neither the command documentation nor the information available on forums and help sites has provided me with an answer.
Akzeptierte Antwort
Weitere Antworten (2)
Aasim
am 8 Apr. 2015
7 Stimmen
This is a better way to do this : Frame will give you a structure which has cdata, i.e,. your data and colormap.. so what you need is your image. so write that on your file and enjoy your image without white borders.. the code is : f=getframe; imwrite(f.cdata,'ImageName.png');
9 Kommentare
Adhi Pranawiyana
am 8 Jun. 2016
really help, thanks a lot Aasim.
Jabiulla Mulla
am 3 Nov. 2017
Thanks Aasim It Worked
Xiao Dong
am 18 Nov. 2017
Thanks a lot Aasim. Problem solved.
KALYAN ACHARJYA
am 3 Mär. 2018
Thanks Asim
Ali Haidar
am 23 Mär. 2018
Thanks Aasim
Abhimanyu Talwar
am 1 Nov. 2018
For some reason this captures only a part of my plot. I didn't imagine spending an hour searching just to save a Matlab plot :(
Image Analyst
am 1 Nov. 2018
Chuen Pan Gary Chan
am 4 Apr. 2020
thxxxx a lot
Markkandan S
am 4 Mai 2021
Really useful for me
The solution worked for me
Thanks a lot
sbstn
am 22 Jul. 2016
0 Stimmen
The above suggestions did not work for me on Mac with Matlab 2015a. There's still extra space around the image. Saving an image without borders should not be a research problem in 2016. Matlab...you can do it!
2 Kommentare
Image Analyst
am 22 Jul. 2016
What exactly are you saving, and what function are you calling? Are you calling imwrite()? Are you saving a matrix, or a figure? How did you get the thing you are saving? If you want help, you'll have to provide more info. I never have imwrite() save extra space around the image if that space wasn't already there before saving.
Mohsin Shah
am 18 Jul. 2018
sbstn you can also try imshow. imshow(image, 'Border', 'tight') After this save your image in eps or png whatever you like. I hope this will work for you.
Kategorien
Mehr zu Images finden Sie in Hilfe-Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!