掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
バイナリデータをビットマップ形式の画像にするには? (ID:32479)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
明らかにforのループの括りが間違っています。 これではデータ1つ読む度に全画面をそのデータでベタ塗り(しかも遅いPixelsで)し、そのベタ塗りをデータ数だけ繰り返していませんか? 動きそうな感じで書いてみました。いろいろ細かく変更してます。参考にしてください。 procedure TForm1.Button2Click(Sender: TObject); var data: ShortInt; //8bit単位にしている(注意) cnt: Integer; buff: Integer; i, j: Integer; fs: TFileStream; breakflag: BOOL; t1, t2: Cardinal; begin t1 := GetTickCount; fs := TFileStream.Create('C:\WINDOWS\シャボン.bmp', fmOpenRead); //私のPCにはある。貴方のPCには無いかもしれない。 try breakflag := false; fs.Position := 440 * Sizeof(data); //ヘッダ読みとばし(注意) for i := 0 to 255 {311} do //注意 begin for j := 0 to 255 {239} do //注意 begin cnt := fs.Read(data, Sizeof(data)); //8bit単位(注意) if cnt < Sizeof(data) then begin breakflag := true; break; end; buff := data * 4; //ここも適当に正規化(注意) if buff > 255 then buff := 255; Image1.Canvas.Pixels[i, j] := RGB(buff, buff, buff); end; if breakflag = true then break; end; t2 := GetTickCount; Label1.Caption := IntToStr(t2 - t1 )+'ms'; finally fs.Free; end; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.