11 個の白い TBitmap (32 ビット 512x512 ピクセル = 1 MB) の配列があり、それらを TPngImage 配列に割り当ててメモリ使用量を減らしたいと考えています。タスク マネージャーで監視したところ、わずか 0.824 MB の違いでした。なぜでしょうか? また、メモリ内の TBitmaps を可逆圧縮するための最良の/高速な方法は何ですか?
for I := 0 to 10 do
begin
Bitmaps[I] := TBitmap.Create;
Bitmaps[I].PixelFormat := pf32bit;
Bitmaps[I].Canvas.Pen.Color := clWhite;
Bitmaps[I].SetSize(512,512);
Bitmaps[I].Canvas.Rectangle(0,0,512,512);
end;
for I := 0 to 10 do
begin
Pngs[I] := TPngImage.Create;
Pngs[I].Assign(Bitmaps[I]);
Bitmaps[I].Free;
end;
アップデート
Form @bummi research 私が行う最善の方法は、png をメモリ ストリーム配列に保存することだと思います。これにより、9.7 MB の差が生じます。
for I := 0 to 10 do
begin
Png := TPngImage.Create;
Png.Assign(Bitmaps[I]);
Streams[I] := TMemoryStream.Create;
Png.SaveToStream(Streams[I]);
Bitmaps[I].Free;
Png.Free;
end;