Timage上のJpeg画像に描画したい

解決


WAT  2008-06-27 15:26:55  No: 31076

TImageのソースにJpeg画像を設定し、マウスで描画(クリックした2点間に直線か矩形を描画)させたいのですが、エラーになります。
元画像がBMPの場合は問題ないようですが、Jpegでは不可能なんでしょうか。
WindowsXP+Delphi5 Pro


Manbon  2008-06-27 21:29:23  No: 31077

以下のような感じでBMPに変換するのはどうですか?

var
  Jpg: TJPEGImage;
  JpgFile: string;
begin
  Jpg := TJPEGImage.Create;
  try
    Jpg.LoadFromFile(JpgFile);
    Image1.Picture.Bitmap.Assign(Jpg);
  finally
    Jpg.Free;
  end;
end;


WAT  2008-07-02 08:09:01  No: 31078

manbonさん、ありがとうございました。
つまり、jpegのままでは描画はできないと..

わかりました。


ofZ  2008-07-02 17:24:13  No: 31079

直線(矩形)を書いたあと、書いたものも含めて保存する必要がないなら
TImageの上にTPaintBoxを重ねて貼りつけて、TPaintBoxに描画するとか。


junki  URL  2008-07-02 18:41:50  No: 31080

>jpegのままでは描画はできない

この部分の「jpegのままでは描画」の意味も分からないです。
jpegのままでは、そもそも表示することもできないです。
TImage では、内部的にビットマップ相当に変換して表示してるので、
明示的に変換すると TCanvas が使えて線が描けるわけです。
jpeg かどうかは結果を保存するときに指定するファイルフォーマットであって
ウィンドウズではどんな形式の画像でもユーザが描けるのはビットマップだけです。


WAT  2008-07-15 06:27:12  No: 31081

放置になってしまいまして、済みませんでした。よく調べたら過去に童謡の質問があったようなのですが、「プロジェクト***がEInvalidOperationクラスの例外を生成しました。ビットマップを持っている時のみイメージの変更が可能です。」というエラーになるのです。
全く同じ処理でソースをBMPファイルにした時は問題ありませんが、ソースをjpegファイルにした時のみ発生します。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加