Ajouter une photo automatiquement dans un dossier uiputfile command
J'ai une forme avec 3axes et 2 buttons(de type pushbutton):
pushbutton1- pour m'afficher les photos du directoire images(j'ai 2 photos)
pushbutton2- pour la selection d'une image et l'ajout automatiquement dans le dossier de moi images dans mon cas(command uiputfile) -comment faire cela dans le pushbutton2_callback.(c'est ici le probleme)
Donc j'ai 3 axes parce que dans le dossier j'ai 2 photos mais je selectionne un fichier jpg dans le pushbutton2_callback et quand j'appuie save il est sauve dans mon dosier l'image selectione avec uiputfile automatiquement.
Et quand je presse le pushbutton1_callback il m'affiche dans les 3 axes(les 2 vieux photos du directoire et la photo que j'ai ajoute dans le dossier dans le pushbutton2_callback). C'est pour cela que j'ai 3 axes sur ma forme.
Pushbutton1_callback(liste en axes de la forme les photos qui se trouvent dans le dossier -ca marche caroline m'a aide).
Si vous pouvez nettoyer un peu mon pushbutton2_callback c'est ca le probleme j'ai essaye avec uiputfile:
J'attache ici les sources:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
function pushbutton1_Callback(hObject, eventdata, handles)
rep = 'C:\MATLAB71\work\Images';
img_list = dir(fullfile(rep,'*.jpg'));
for k=1:length(img_list)
% Chargement de la kième image
img = imread(fullfile(rep, img_list(k).name));
%l'afficher dans axesk de la deuxieme forme (utilisation champs
%dynamique)
image(img,'Parent',handles.(['axes',num2str(k)]));
end |
Ce callback d'ajout quand je presse save ajouter l'image selectionne dans mon repertoire(C:\MATLAB71\work\Images) ne marche:(. J'essaye avec uiputfile dans le deuxieme callback c'est ici le probleme:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
function pushbutton2_Callback(hObject, eventdata, handles)
pathname='C:\Matlab71\work\Images';
[filename, pathname] = uiputfile(...
{'*.jpg' ;'*.bmp ';'*.tif';'*.gif'},...
'Save as'); %fenetre de dialogue pour sauver une image selectee dans le directoire specifie par variable pathname
f=fullfile(pathname,filename);
imwrite(p,f);%sauver l'image selectee dans le dossier specifie par pathname
%p,f deux variables pour le pathname et filename
if exist(fullfile(pathname,filename),'file') %si l'image jpg existe dans le dossier C:\Matlab71\work\Images
%dans ce cas afficher une error dialog avec message corespondant
errordlg('Le fichier existe deja dans le directoire!','Erreur!');
end |
J'ai modifie comme tu m'as dis
J'ai essaye tous ce que tu m'as dit je n'ai aucun erreur de compilation mais toujours il apparait le meme message:
(quand j'ai selecte une image qui n'est pas dans mon dossier c:\matlab71\work\poze il me dit que cette image existe deja:O. Pourquoi:
Ici quand j'ai fait ruler mon programme j'ai mis un screenshot ici:
http://img257.imageshack.us/img257/3305/erreur.png
la condition de cancel va bien quand je presse save pour une photo selecte il ne m'ajoute pas dans mon dossier:(.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
[filename, pathname] = uiputfile(...
{'*.jpg' ;'*.bmp ';'*.tif';'*.gif'},...
'Save as');
%[filename, pathname] = uiputfile(...
%'*.jpg' ;'*.bmp ';'*.tif';'*.gif'},...
%'Save as'; %fereastra dialog pt.salvarea fisierelor intr-un director
%f=fullfile(pathname,filename);%marquer dans une seul variable le pathname et filename?
%ou separament dans deux variables f=fullfile(filename); %p=fullfile(pathname) et apres imwrite(p,f)
if ~ischar(filename)
errordlg('Eroare!','Nici un fisier selectat!'); %on cancel press
return;
end
if exist(fullfile(pathname,filename),'file') %condition si le fichier image %existe dans mon directoire dans mon cas c'est C:\Matlab71\work\poze %et je veux ajouter dinamiquement une photo selecte dans cette dossier quand je presse save boutton j'ai ajoute une image d'exterieur de ce dossier mais il me dit que l'image existe? Comment je dois nettoyer mon fichier?
errordlg('Fisierul exista deja in director','Eroare!');
return
end
imwrite(f);%sauver l'image selectee dans le dossier specifie par pathname |
J'attends une reponse!
Merci en avance duf!