次の答えは、具体的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)
:http://www.mathworks.com/help/matlab/ref/tiff-class.html
は、以下のサンプルコードは、(比較的)大きなTIFF画像ファイルを保存し、保存中に前進ウエイトバーを表示中です'export_fig'自体の機能を変更しました。 'waitbar'(または他の更新/進捗報告機能)のコードを**' export_fig.m'の中に置かなければなりません。 – Hoki