imwrite saving image incorrectly
显示 更早的评论
I am trying to use app designer to create an app where you can load an image from your desktop, compress or decompress the image and then save the image. I have been able to load the image without any issues however when I save the image it removes the background or makes the whole image black. Heres my code:
[file, path] = uiputfile('.png');
image = imread(app.imagePath);
imwrite(image,fullfile(path,file))
app.imagePath is the path to the original image that I want to save
回答(1 个)
Ameer Hamza
2020-12-8
Does your png image have transparent components? Try saving with the alpha channel.
[file, path] = uiputfile('.png');
[image, ~, amap] = imread(app.imagePath);
imwrite(image,fullfile(path,file), 'Alpha', amap)
5 个评论
Harry West
2020-12-8
Ameer Hamza
2020-12-8
That shows your png images do not have an alpha mask. But in that case, the background issues shouldn't happen. Can you attach one of your images?
Image Analyst
2020-12-8
And, Harry, don't use "image" as the name of your variable because it's an important built-in function that you just blew away.
Harry West
2020-12-8
Ameer Hamza
2020-12-8
Ok, the issue is not the alpha map; rather, the png file is saved as an indexed image.
Either convert it to rgb image before using imwrite()
[img, cmap] = imread('block.png');
img_rgb = ind2rgb(img, cmap);
imwrite(img_rgb, 'test.png')
or specify colormap in imwrite()
[img, cmap] = imread('block.png');
imwrite(img, cmap, 'test.png')
类别
在 帮助中心 和 File Exchange 中查找有关 Images 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!