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:
Comment enregistrer MATLAB figure en JPEG à l'aide saveas() sans l'image vient de mal?

Image JPEG enregistrés à l'aide de saveas() fonction (notez que les parcelles ne sont pas aussi nice et les titres se chevauchent):
Comment enregistrer MATLAB figure en JPEG à l'aide saveas() sans l'image vient de mal?

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.
InformationsquelleAutor GigaRohan | 2013-04-13