I have created a matlab GUI where I want to save the processed images using a SAVE button. I am using a slider where I can browse through the processed images. I want to save each image with the SAVE button. Unfortunately, the images are not saved in the correct format(I want to save it in the jpeg format). Any suggestions would be appreciated.
function pushbutton4_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
handles = guidata(hObject);
filePattern=handles.filePattern;
num_files=handles.num_files;
theFiles=handles.theFiles;
myFolder=handles.myFolder;
value=handles.value;
seg=handles.seg;
% dirName = fullfile(pwd,'Results',myFolder);
% if ~exist(dirName,'dir')
% mkdir(dirName);
% end
[filename, foldername] = uiputfile('D:\regionGrowing_MLT');
complete_name = fullfile(foldername, filename);
imwrite(seg{value}, complete_name,'jpg');
guidata(hObject, handles);
end

6 Kommentare

Geoff Hayes
Geoff Hayes am 14 Mai 2021
Warid - what format are the files being saved as? Are you sure that you are saving the correct image to file? I'm assuming that seg is a cell array of each of the images that you are cycling through.
Warid Islam
Warid Islam am 14 Mai 2021
Hi Geoff,
I don't know the format of the file. I have attached the property of the file. I am not sure if I am saving the correct image to the file. seg is a cell array. I want to call each element in the array and save those images using the SAVE button.
Walter Roberson
Walter Roberson am 14 Mai 2021
I recommend that you configure to show file extensions; https://fileinfo.com/help/windows_10_show_file_extensions
Warid Islam
Warid Islam am 14 Mai 2021
I applied it to my file. The 'j' is the file that I get after clicking the SAVE button.
Walter Roberson
Walter Roberson am 15 Mai 2021
The implication is that when you do the [filename, foldername] = uiputfile('D:\regionGrowing_MLT'); that the user is giving you a name without any file extension, and you are not appending an extension.
Your file j should be a jpeg file, considering the way you created it.
Warid Islam
Warid Islam am 15 Mai 2021
Your suggestions worked. Thanks a lot.

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Image Analyst
Image Analyst am 15 Mai 2021

0 Stimmen

A more robust way is this:
% Get the name of the file that the user wants to save.
% Note, if you're saving an image you can use imsave() instead of uiputfile().
startingFolder = 'D:\regionGrowing_MLT'; % Or "pwd" or wherever you want.
if ~isfolder(startingFolder)
startingFolder = pwd;
end
defaultFileName = fullfile(startingFolder, '*.jpg');
[baseFileName, folder] = uiputfile(defaultFileName, 'Specify a file');
if baseFileName == 0
% User clicked the Cancel button.
return;
end
% If they entered an extension, throw it away because (for some reason)
% we want to force it to be JPG format, not whatever other format they may have entered.
[~, baseFileNameNoExt, ext] = fileparts(baseFileName)
fullFileName = fullfile(folder, [baseFileNameNoExt, '.jpg'])
% Now save the JPG image.
imwrite(seg{value}, fullFileName);
Of course you're better off using PNG format than the lossy JPG which often shows bad compression artifacts.

Weitere Antworten (0)

Kategorien

Mehr zu Convert Image Type finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by