名前 題名 ▼ Mr.XRAYさん > ># こうやって,他の人の文章,書き込みを読むことによって > ># 自分自身が書くときの参考にすることは,大切だと思うのですよ. > > というわけで,話のついでに. > > [TImageを8bit BMPで保存したい] > http://www.freeml.com/delphi-users/3631/latest > > によると,複数のビットマップ画像をディスクから読み込んで,TImage に表示し, > その TImage に表示している画像を,別のビットマップとして保存する. > というのがあります. > この時,画像の色数,つまりビット深さを 8 ビットにしたいということ. > と解釈しました. > > で,私目がよく言う,「テスト用の新規プロジェクト」はどうなるかと言いますと. > > (1) 複数のビットマップを描画したから 8 ビットで保存できないのか > (2) 1 つの画像を TImage に表示した場合ではならないのか > > と,いろいろ考えるわけです. > 単純なのは,当然 1 つだけの場合です. > で,以下がテストコードです,グローバル変数は使用していません. > ボタンクリックごとに独立しています. > > 結果は,保存した画像ファイルの色数(ビット数) は 32 ビットとなります. > ですから,8 ビットにしたければ,まず,このテストコードでやっていくことになります. > > 動作確認環境は Windows 7 U64(SP1) + Delphi XE Pro です. > > //----------------------------------------------------------------------------- > // ディスクから画像ファイルを読み込んでTImageに描画 > // 画像ファイルのビット深さは8ビット > //----------------------------------------------------------------------------- > procedure TForm1.Button1Click(Sender: TObject); > var > TmpBMP: TBitmap; > begin > TmpBMP := TBitmap.Create; > try > TmpBMP.LoadFromFile('503-256.bmp'); > Image1.Canvas.StretchDraw(Rect(0, 0, 250, 250), TmpBMP); > finally > FreeAndNil(TmpBMP); > end; > end; > > //----------------------------------------------------------------------------- > // TImageに表示している画像をビットマップとして保存 > // 保存後は色数が32ビットの画像となる > //----------------------------------------------------------------------------- > procedure TForm1.Button2Click(Sender: TObject); > begin > Image1.Picture.SaveToFile('AAA.bmp'); > end; > > 「コードを絞り込む」 > 「その問題となっている機能だけをテストするプロジェクトを作成する」 > の例として. > > えっ? 何ですか ? じゃぁ,どうやるのかって? > ちょっと前のスレッドに,参考となる内容があるじゃありませんか? > えっ? どうしても知りたい ? GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link