Comment enregistrer MATLAB figure en JPEG à l'aide saveas() sans l'image vient de mal?
Dans une fonction MATLAB je suis en train d'écrire, je suis de la génération d'un chiffre. La figure est affiché lorsque la fonction est exécutée. J'ai besoin d'enregistrer la figure comme une image JPEG. Pour ce faire, je pouvais le faire Fichier->Enregistrer sous dans la figure de la fenêtre qui affiche la figure. Mais j'aimerais automatiser cela. J'ai essayé de le faire à l'aide de la saveas() fonction. Le problème est que l'image qui en résulte est pas souhaitable. Voici les images pour une démo problème pour vous montrer ce que je veux dire:
Image JPEG enregistrés manuellement à l'aide de Fichier->Enregistrer sous dans le MATLAB figure de la fenêtre:
Image JPEG enregistrés à l'aide de saveas() fonction (notez que les parcelles ne sont pas aussi nice et les titres se chevauchent):
Ici est la fonction MATLAB dans lequel je générer la figure et enregistrer la figure comme un JPEG à l'aide de saveas():
function JpgSaveIssueDemo( )
figure( 1 );
t = 0:0.1:8;
subplot( 2, 2, 1 );
plot( t, sin(t) );
title( 'Plot 1 of Example to Demonstrate JPG Save Issue', 'FontSize', 18 );
subplot( 2, 2, 2 );
plot( t, sin(t) );
title( 'Plot 2 of Example to Demonstrate JPG Save Issue', 'FontSize', 18 );
subplot( 2, 2, 3 );
plot( t, sin(t) );
title( 'Plot 3 of Example to Demonstrate JPG Save Issue', 'FontSize', 18 );
subplot( 2, 2, 4 );
plot( t, sin(t) );
title( 'Plot 4 of Example to Demonstrate JPG Save Issue', 'FontSize', 18 );
saveas( gcf, 'DemoPlot', 'jpg' );
end
Le chiffre qui apparaît lorsque JpgSaveIssueDemo() est exécutée n'est pas maximisée. Alors, j'ai pensé que si je pouvais l'agrandir à l'aide de la fonction d'appel/s en JpgSaveIssueDemo() avant saveas() est exécutée, puis l'image JPEG enregistrés sortent bien.
J'ai utilisé ce code avant le saveas() ligne JpgSaveIssueDemo() afin de maximiser la figure:
drawnow;
jFrame = get(handle(gcf),'JavaFrame');
jFrame.setMaximized(true);
Ensuite, le chiffre qui apparaît est agrandie. Toutefois, le résultat est le même: l'image JPEG vient encore considérée comme indésirable.
Ce qui peut être fait pour cela?
- Solution partielle: Jpg est le mauvais type de image de pour cela. Les carrés de la les ordures, près de la ligne de votre image, sont jpg artefacts de compression. Utilisez jpg pour des choses comme des photos, utilisez le format png pour des choses comme des graphes. Le format png vous donnera la meilleure qualité et le fichier de petite taille.
Vous devez vous connecter pour publier un commentaire.
L'Matlab figure boîte de dialogue d'exportation et la
saveas()
fonction manque beaucoup de souhaitable fonctionnalité. En particulier,savas()
ne peut pas créer un personnalisé resoultion image qui est pourquoi les résultats des pauvres. Pour la création d'images bitmap je recommande fortement d'utiliser le tiers de la fonction export_fig. En ajoutant le code suivant à votre fonction (y compris la maximisation de truc)J'ai créé cette image: (utilisation "afficher l'image" ou similaire dans votre navigateur pour obtenir la taille d'origine)
Pour une meilleure qualité d'utiliser des résolutions plus élevées de 150 ou même à 300 dpi (pour l'impression). Au lieu de maximiser la figure de la fenêtre, pour la plupart des applications, il convient de définir l'axe de la taille pour obtenir une image de la taille désirée:
Suffit d'utiliser une compression sans perte évolutive des formats comme EPS, voir la dernière ligne de l'extrait ci-dessous 🙂
Je ne peut pas joindre un fichier EPS ici, pas de prise en charge, mais son évolutive et peut être mis en traitement de texte ou de Latex sans vous soucier de la mauvaise résolution.
J'ai eu le même problème, et voici ce que j'ai utilisé pour le résoudre:
set(gcf,'PaperPositionMode','auto')
saveas(gcf,'file_to_save','png')
où
gcf
peut être remplacé par de la poignée pour le chiffre désiré.