figureの画像ファイル保存を高速に実施したい

27 visualizzazioni (ultimi 30 giorni)
Kazutoshi Ishioka
Kazutoshi Ishioka il 9 Mar 2020
Risposto: Kazutoshi Ishioka il 10 Mar 2020
お世話になります
figureをjpgやpngで保存したいのですが、saveas や print を使うと 0.3~0.5秒ほどかかってしまいます。
もっと高速に画像ファイルに保存する方法をご存知でしたら教えてください
参考として、以下のようなコードを試したました
figA = figure( ) ;
plot( (0:0.01:4) , sin((0:0.01:4)) , 'b-' ) ;
tic
saveas( figA , [ 'ImageTest1' '.jpg' ] ) ;
toc
tic
saveas( figA , [ 'ImageTest2' '.png' ] ) ;
toc
tic
print( [ 'ImageTest3' ],'-djpeg') ;
toc
tic
print( [ 'ImageTest4' ],'-djpeg','-r100') ;
toc
tic
print( [ 'ImageTest5' ],'-dpng') ;
toc
tic
print( [ 'ImageTest6' ],'-dpng','-r100') ;
toc
経過時間は 0.436288 秒です。
経過時間は 0.390027 秒です。
経過時間は 0.347835 秒です。
経過時間は 0.239091 秒です。
経過時間は 0.393254 秒です。
経過時間は 0.252771 秒です。

Risposta accettata

Kenta
Kenta il 9 Mar 2020
こちら、最速の方法かどうかは不明ですが、getframeで取得し、imwriteにすると約0.1秒になり、私のPCでは他の方法の3倍ほどになりましたがいかがでしょうか。
figA = figure( ) ;
plot( (0:0.01:4) , sin((0:0.01:4)) , 'b-' ) ;
pause(3)
tic
saveas( figA , [ 'ImageTest1' '.jpg' ] ) ;
toc
tic
saveas( figA , [ 'ImageTest2' '.png' ] ) ;
toc
tic
print( [ 'ImageTest3' ],'-djpeg') ;
toc
tic
print( [ 'ImageTest4' ],'-djpeg','-r100') ;
toc
tic
print( [ 'ImageTest5' ],'-dpng') ;
toc
tic
print( [ 'ImageTest6' ],'-dpng','-r100') ;
toc
tic
I=getframe(gcf);
imwrite(I.cdata,'imagetest7.jpg')
toc

Più risposte (1)

Kazutoshi Ishioka
Kazutoshi Ishioka il 10 Mar 2020
早速のご回答ありがとうございます。
処理速度が1/3ほどに高速化できました。

Categorie

Scopri di più su 印刷と保存 in Help Center e File Exchange

Prodotti


Release

R2015b

Community Treasure Hunt

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

Start Hunting!