how to save image
291 次查看(过去 30 天)
显示 更早的评论
采纳的回答
Jan
2011-12-9
Image = getframe(gcf);
imwrite(Image.cdata, 'mask_image.jpg');
Another method:
printf(gcf, '-djpeg100', 'mask_image.jpg', '-r0');
But the later is not guaranteed to have exactly the same size. There are some rounding effects between the units of the figure and the pixel resolution.
3 个评论
Clinton Connelly
2021-9-30
You could just use the built-in "imwrite" function to save any loaded image, or specifically a 'uint8' file, to a file of any choice:
Image = imread("ImageName.jpg");
imwrite(Image, "NewImageName.jpg");
This code doesn't return the max resolution of the file, but there is a parameter for that:
Image = imread("ImageName.jpg");
imwrite(Image, "NewImageName.jpg", "Quality", 100)
The interval of values for quality is between 0 and 100, inclusive, with the result being self-explanatory
Other information could be found in matlab by typing the input "help imwrite" and doing some reading...
There's also a text file called libtiffcopyright.txt, but I don't know where to find that
DGM
2024-7-24
编辑:DGM
2024-7-24
Using figure capture to JPG for saving images is only a smidge less ridiculous than using your phone to take a skewed photo of your monitor.
I second @Clinton Connelly here. Depending on the scenario (version, environment, image size, figure style), neither saveas(), print(), nor getframe() are guaranteed to return an image of the correct geometry. The data scale, class, and number of channels may be altered. The image resolution will be altered, and there will likely be a random amount of padding added. There is rarely a good reason to save images by taking a screenshot. Just use imwrite().
To make matters worse, it's implied by the naming that this image is a binarized image. I see no good reason to be saving binary images as JPG. A PNG is lossless and will produce a smaller file with flat-colored image content. Even if it's not binarized, I'm still going to assert that most people are not making an informed decision to permanently damage their images with a downsampled JPG.
Setting the 'Quality' parameter to 100 does not create a faithful reproduction. The only way to produce a lossless image with full spatial resolution in the chroma channels is to specify the 'lossless' flag, which (iirc) produces a JP2 file instead of a baseline JPG. Everything else that imwrite() produces is a 4:2:0 downsampled JPG, even at 100% quality.
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!