2010-11-28 13 views
0

Dans mon application, je dois convertir toutes les images au format (.png) au format (.jpg). J'ai utilisé la fonction imwrite (une des fonctions de Matlab):convertir l'image avec le format (.png) au format (.jpg) dans Matlab

S=imread('D-1.png'); 
imwrite(S,'D-1.jpg'); 

et je peux convertir une seule image ... Je dois convertir toutes les images et les enregistrer dans un nouveau dossier. Pourrait-on s'il vous plaît laissez-moi savoir comment je peux le faire? Y a-t-il des changements dans les propriétés de l'image après la conversion au format (.jpg)?

Veuillez faire suivre vos précieuses suggestions.

Merci

+3

Est-ce que l'une des réponses répond à votre question? Si oui, veuillez l'accepter, sinon essayez d'indiquer dans les commentaires, ou dans votre question, ce qui manque. Je vous remercie. –

Répondre

3

Ce que vous devez faire est la suivante:

  1. obtenir une liste de tous les fichiers que vous souhaitez convertir. Utilisez la fonction dir, qui renvoie une structure avec un composant name.
  2. Écrivez une boucle pour parcourir les fichiers un à la fois et les convertir - vous pouvez utiliser le code que vous avez déjà écrit, mais bien sûr vous devrez définir les noms de fichiers à chaque itération.
  3. Lorsque vous écrivez le fichier converti, incluez le chemin d'accès relatif au nouveau dossier dans le nom du fichier que vous écrivez, quelque chose comme: imwrite(S,'./newfolder/D-1.jpg').

Y a-t-il des modifications aux propriétés de l'image après la conversion? En général oui, puisqu'il y a des différences dans les informations que png et jpeg encodent. L'aide de Matlab pour les fonctions imread et imwrite explique une partie de ceci. Vous pouvez trouver que vous avez besoin ou que vous voulez modifier l'image que vous avez lu avant de l'écrire.

+0

je vous remercie de répondre – zenab

+0

Je dois écrire le code suivant, mais comment puis-je changer le nom de filie dans chaque fois – zenab

+0

pour k = 1: longueur (noms de fichiers) I = fileNames {k}; S = imread (I); imwrite (S, './H/D-k.jpg'); – zenab

-4

Je prends la suggestion des membres et j'ai essayé le codage suivant donc j'ai pu convertir le format (.png) à (.jpg) Format:

fileFolder = fullfile('D:','\Last Work Nov. 2010 16','Last ColTexFeapro28 Nov', 'Brodatz classes', 'Brodatz999'); 
dirOutput = dir(fullfile(fileFolder,'D*.png')); 
fileNames = {dirOutput.name}; 

for k=1:length(fileNames) 
       I=fileNames{k}; 
S=imread(I); 
newName = sprintf('image%04d.jpg',k); // convert from (.png to .jpg) format 
movefile(fileNames{k},newName); 
+5

-1 MOVEFILE renommera uniquement les fichiers de .png en .jpg. Vous devez toujours utiliser IMWRITE comme dans votre question pour convertir correctement les images – Amro