JPG画像を8ビットにする方法

解決


でるでる  2007-02-21 11:03:13  No: 25031  IP: 192.*.*.*

お世話になります。
8ビットのBMPファイルをJPG画像に変換したいのですが、
24ビットのJPG画像になってしまいます。
これだと容量的にあまり変わらないので8ビットにしたいのですが
うまくいきません。
ヘルプでPixel.Format := jf8bit;
を使用すると書いてあるのですが...使い方がわかりません。
どなたか教えて下さい。

編集 削除
えーと  2007-02-21 12:40:11  No: 25032  IP: 192.*.*.*

8ビットのjpegフォーマットというのはありません。

編集 削除
でるでる  2007-02-21 16:23:52  No: 25033  IP: 192.*.*.*

えーとさん、ありがとうございます。
一応ヘルプで調べると
TJPEGImage.PixelFormat
PixelFormat プロパティは,JPEG イメージが 24 ビット形式で表示されるか,8 ビット形式で表示されるかを決めます。
説明の所で
PixelFormat プロパティは,JPEG イメージのピクセル形式を,24 ビット表示ができないビデオドライバ用に 8 ビットに設定できます。
と書いてあるのですが...これですか?

編集 削除
さどやま  URL  2007-02-21 19:51:50  No: 25034  IP: 192.*.*.*

> と書いてあるのですが...これですか?
  そのとおりです。
  Tif, Gif...何にせよモニタに表示するときにはビットマップに変換して表示されます。
  その際に 8bit で表示するか 24bit にするかを選択・指定できるという意味です。

  Jpeg は「圧縮率」でファイルサイズを調整できますが、ビット深度で色数を決めるフォーマットにはなっていません。

編集 削除
みんみん  2007-02-22 00:05:27  No: 25035  IP: 192.*.*.*

〜TJPEGImageの圧縮率を変えて保存するサンプル〜
ファイル名は適当です。
できたファイルのサイズも確認してみてください。

procedure TForm1.Button1Click(Sender: TObject);
var
 jp :TJPEGImage;
begin
 jp :=TJPEGImage.Create;
 try
  with jp do begin
    LoadFromFile('C:\test.jpg');
    CompressionQuality :=20;//圧縮率 1〜100
    DIBNeeded;
    Compress;
    SaveToFile('C:\test2.jpg');
  end;
  finally
   jp.free;
  end;
end;

編集 削除
でるでる  2007-02-22 12:59:08  No: 25036  IP: 192.*.*.*

さどやまさん、ありがとうございます。
JPEGファイルはBMPファイルと同じようなものと考えていました。
違うのですね。
みんみんさん、ありがとうございます。
コピペで動作確認しました。劣化するものかなと思いましたが、
非圧縮と変わらない画質でした。(20%にしました。)

編集 削除