お世話になります。
8ビットのBMPファイルをJPG画像に変換したいのですが、
24ビットのJPG画像になってしまいます。
これだと容量的にあまり変わらないので8ビットにしたいのですが
うまくいきません。
ヘルプでPixel.Format := jf8bit;
を使用すると書いてあるのですが...使い方がわかりません。
どなたか教えて下さい。
8ビットのjpegフォーマットというのはありません。
えーとさん、ありがとうございます。
一応ヘルプで調べると
TJPEGImage.PixelFormat
PixelFormat プロパティは,JPEG イメージが 24 ビット形式で表示されるか,8 ビット形式で表示されるかを決めます。
説明の所で
PixelFormat プロパティは,JPEG イメージのピクセル形式を,24 ビット表示ができないビデオドライバ用に 8 ビットに設定できます。
と書いてあるのですが...これですか?
> と書いてあるのですが...これですか?
そのとおりです。
Tif, Gif...何にせよモニタに表示するときにはビットマップに変換して表示されます。
その際に 8bit で表示するか 24bit にするかを選択・指定できるという意味です。
Jpeg は「圧縮率」でファイルサイズを調整できますが、ビット深度で色数を決めるフォーマットにはなっていません。
〜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;
さどやまさん、ありがとうございます。
JPEGファイルはBMPファイルと同じようなものと考えていました。
違うのですね。
みんみんさん、ありがとうございます。
コピペで動作確認しました。劣化するものかなと思いましたが、
非圧縮と変わらない画質でした。(20%にしました。)
ツイート | ![]() |