我正在执行参数扫描。在for循环中,参数的值会发生变化。基于此参数,将生成一个图并将其另存为.tiff
文件。
我注意到生成的文件的文件大小略有不同,例如
215,222,223,215,210,196,195,195,195,195 kB。
我想知道他们为什么不都具有完全相同的文件大小?
编辑:MWE
1。 TIFF
执行
for a=1:3
b=1:.01:10;
h=figure(1);
plot(b,sin(a*b))
set(h,'units','normalized','outerposition',[0 0 1 1]);
filename=horzcat('test_',num2str(a),'.tiff');
print('-dtiff',filename)
end
使用resp生成3个文件。文件大小79,95,110kB。
2。 BMP
执行
for a=1:3
b=1:.01:10;
h=figure(1);
plot(b,sin(a*b))
set(h,'units','normalized','outerposition',[0 0 1 1]);
filename=horzcat('test_',num2str(a),'.bmp');
print('-dbmp16m',filename)
end
产生3个文件大小相同的文件:3165kB。
答案 0 :(得分:4)
可以预期文件大小的差异。
在位图图像(无压缩)中,每个像素的颜色值存储在文件中。无论所有像素是白色,黑色还是存储每个像素的值都无关紧要。因此,所有位图图像(具有相同尺寸和颜色深度)的尺寸都相同。您正在使用24位位图,这意味着图中的每个像素分配了24位。 More information on bitmaps
另一方面,TIFF稍微复杂一些。正如@Andras所述,可以压缩TIFF,压缩取决于图像内容。例如,如果图像全部为黑色,那么高度可压缩,因为它只是整个图像的一个颜色值(导致文件较小)。如果每个像素都是不同的颜色,则压缩性较差(导致文件较大)。在您的示例中,您正在更改绘图中的数据,这些数据会更改已保存图像中像素颜色的分布,这最终会将TIFF的文件大小从迭代更改为迭代。您可以期望相同文件大小的唯一方法是,如果您的数据完全相同且数字大小相同。