掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TGPBitmapでファイルにセーブしても保存されないのは何故? (ID:151943)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
またまたスレ汚しです. [ テキスト + 画像データ] のデータを複数,1 つのファイルとして保存したい場合, 読み出す時に各々の画像データのサイズが必要です. その場合はは [ テキスト + 画像データのサイズ + 画像データ ] を保存します. 前に提示たコードでは例えば LBmpSize という変数を使用するとすると, LGPBitmap.Save(TStreamAdapter.Create(LByteStream), ImageBMPClsid); // LBmpSize は 読み出しの時の LReadSize と同じ型にする LBmpSize := LByteStream.Size; LFileStream.WriteData(LBmpSize); LFileStream.Write(LByteStream.Byte+[0], LBmpSize); 読み出す時は以下のようにできます. LFileStream.ReadData(LReadSize); LByteStream.Size := LReadSize; LFileStream.Read(LByteStream.Bytes[0], LReadSize); LGPBitmap := TGPBitmap.Create(TStreamAdapter.Create(LByteStream)); LGPBitmap.Save('503_Save.bmp', ImageBMPClsid); TBitmap は,そのままファイルストリームに書き込むとサイズが分かりません. 一度ストリームに格納して,そのストリームをファイルストリームに書き込みます あるいは Position プロパティの値から計算します. ※ クラスにしてしまう方法も考えられますが,可変長データのプロパティの扱いは面倒です.
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.