Delphi2007なんですが、
画像をファイルから読んでストリームに保存するプログラムを作っています。
BitmapやJpegは問題ないのですが、Gifの場合にストリームから読み出すと
サイズが倍になるという現象が発生します。
ファイルから読んで
Picture.LoadFormFile(…)
↓
データベースに保存
Picture.Graphic.SaveToStream(…)
(DataSet.FieldByName(…) as TBlobField).LoadFormStream(…)
↓
データベースから読み出し
(DataSet.FieldByName(…) as TBlobField).SaveToStreamam(…)
Picture.Graphic := 画像別のTGraphic派生クラス.Create;
Picture.Graphic.LoadFromStream(…)
→この時点で、データベースから読み出したストリームは正常なのですが、
LoadFromStreamの直後にSaveToStreamしてみると2倍のサイズになってしまいます。
その画像をTImageで表示しても見た目の不具合はありません。サイズが大きいので処理は重くなりますが。
保存〜読み出しを繰り返すと倍倍で大きくなり、いずれフリーズします。
TGIFImageの不具合か何かでしょうか?回避策があれば教えてください。
すいません、一部間違えてました。
サイズが2倍になるのは、データベースから読みだしたPictureを、他のPictureオブジェクトにアサインしたときに2倍になります。
自己解決しました
編集 削除[追記]
自己解決の手段ですが、GIFを読み込んだPictureをAssignしたときに、サイズが2倍になる現象は回避する手段が見つからなかったので、Picture.Graphicをストリーム経由で保存/読み出しによるコピーで代替しました。
この方法だとサイズは変わらない様でした。