- PR -

画像ファイルの圧縮について

1
投稿者投稿内容
Dra
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 111
投稿日時: 2006-02-09 17:07
ASP.NETにてクライアントよりアップロードされたファイルを
圧縮しサーバに保存するシステムを構築しています。
アップロードされた画像の横サイズ・縦サイズ・JPEG圧縮率は指定できたのですが
圧縮後のファイルサイズ(優先)を指定する方法がわかりません。
どなたか分かる方がいらっしゃいましたら、ご教授願います。
よろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-09 17:13
引用:

Draさんの書き込み (2006-02-09 17:07) より:

JPEG圧縮率は指定できたのですが
圧縮後のファイルサイズ(優先)を指定する方法がわかりません。


圧縮率によって相対的に決まるものですが...

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Dra
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 111
投稿日時: 2006-02-09 17:21
じゃんぬねっとさんありがとうございます。
質問が悪かったです・・・「指定サイズ以下に圧縮したい」
指定サイズ以下になるまで内部的に圧縮率を変更させるしかないのでしょうか?

お願い致します。
cats
大ベテラン
会議室デビュー日: 2002/11/29
投稿数: 221
お住まい・勤務地: 東京
投稿日時: 2006-02-09 19:18
こんな感じ。
コード:
Bitmap b = (Bitmap)Bitmap.FromFile(...);
EncoderParameters ep = new EncoderParameters(1);
ep.Param[0] = new EncoderParameter(Encoder.Quality, rate /* ここ */);
ImageCodecInfo ic = null;
foreach (ImageCodecInfo encInfo in ImageCodecInfo.GetImageEncoders()) 
{
  if (encInfo.MimeType == "image/jpeg") {ic = encInfo; break;}
}
if (ic != null) b.Save(..., ic, ep);
b.Dispose();


ちいにぃ
大ベテラン
会議室デビュー日: 2002/05/28
投稿数: 244
投稿日時: 2006-02-09 19:40
JPEG圧縮の圧縮後のデータサイズを求める処理は、
JPEG圧縮自体とほとんど変わらない処理とコストがかかる、と聞いています。

よって、JPEG圧縮を行うライブラリでは、圧縮後のデータサイズを求める機能は
用意されていないでしょう。

ですので、JPEG圧縮でデータサイズを決めたい場合は、おっしゃるとおり、
「指定サイズ以下になるまで内部的に圧縮率を変更させるしかない」です。


以下は余談。

・デジタルカメラでファイルサイズが一定しないのは、この処理(ループ)のコストが
大きいからです。

・ディスク上のファイル群に対して、このような処理を行ってくれるソフトウェアが
いくつかあったかと思います。

・JPEG2000では、こういうループなしにデータサイズを決められる(そのように設計された)、
と聞いたことがあります。
Dra
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 111
投稿日時: 2006-02-10 08:58
catsさん、ちいにぃさんありがとうございます。
時間は掛かりそうですが・・・
1

スキルアップ/キャリアアップ(JOB@IT)