GIF画像の読み書き

解決


えび  2013-07-04 18:19:20  No: 44800  IP: 192.*.*.*

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の不具合か何かでしょうか?回避策があれば教えてください。

編集 削除
えび  2013-07-04 18:40:55  No: 44801  IP: 192.*.*.*

すいません、一部間違えてました。
サイズが2倍になるのは、データベースから読みだしたPictureを、他のPictureオブジェクトにアサインしたときに2倍になります。

編集 削除
えび  2013-07-05 08:31:56  No: 44802  IP: 192.*.*.*

自己解決しました

編集 削除
えび  2013-07-10 00:27:18  No: 44803  IP: 192.*.*.*

[追記]
自己解決の手段ですが、GIFを読み込んだPictureをAssignしたときに、サイズが2倍になる現象は回避する手段が見つからなかったので、Picture.Graphicをストリーム経由で保存/読み出しによるコピーで代替しました。
この方法だとサイズは変わらない様でした。

編集 削除