2016-08-07 13 views
2

次のMatlab GUIコードでは、TIFF画像を保存し、時折数秒かかるので、バーが更新されず、ファイルの保存時に自動的に閉じられるため、waitbar関数を使用しました。動作時間を示す経過時間カウンタを追加することは可能ですか?経過時間カウンタに追加 - Matlab

コードスニペット:

h = waitbar(0,'In process'); 
export_fig(handles.imageAxes,saveFileAs, '-r500'); 
close(h); 
+0

http://www.mathworks.com/help/matlab/ref/tiff-class.html

は、以下のサンプルコードは、(比較的)大きなTIFF画像ファイルを保存し、保存中に前進ウエイトバーを表示中です'export_fig'自体の機能を変更しました。 'waitbar'(または他の更新/進捗報告機能)のコードを**' export_fig.m'の中に置かなければなりません。 – Hoki

答えて

2

次の答えは、具体的tiff画像を適用します。
imwrite機能の一般的な解決策を見つけようとしましたが、できませんでした。

imwriteの代わりにTiffクラスを使用します。
Tiffクラスを使用すると、画像全体を一度に保存する代わりに、Tiff画像ファイルをストリップで保存することができます。
参照:それなしでは不可能である

%Simulate large image (to be saved as tiff later) 
I = imread('peppers.png'); 
I = repmat(I, [10, 10]); %Image resolution: 5120 x 3840. 

t = Tiff('I.tif', 'w'); 

width = size(I, 2); 
height = size(I, 1); 
rows_per_strip = 16; %Select 16 rows per strip. 

setTag(t, 'ImageLength', height) 
setTag(t, 'ImageWidth', width) 
setTag(t, 'Photometric', Tiff.Photometric.RGB) 
setTag(t, 'BitsPerSample', 8) 
setTag(t, 'SamplesPerPixel', 3) 
setTag(t, 'RowsPerStrip', rows_per_strip) 
setTag(t, 'PlanarConfiguration', Tiff.PlanarConfiguration.Chunky) 
setTag(t, 'Compression', Tiff.Compression.LZW) 

n_strips = ceil(height/rows_per_strip); %Total number of strips. 

h = waitbar(0, 'In process'); 

%Write the tiff image strip by strip (and advance the waitbar). 
for i = 1:n_strips 
    y0 = (i-1)*rows_per_strip + 1; %First row of current strip. 
    y1 = min(y0 + rows_per_strip - 1, height); %Last row of current strip. 
    writeEncodedStrip(t, i, I(y0:y1, :, :)) %Write strip rows y0 to y1. 
    waitbar(i/n_strips, h); %Update waitbar. 
    drawnow %Force GUI refresh. 
end 

close(t) 
close(h) 

enter image description here

関連する問題