[ASP.NET]アップロードされた画像をJPEGで保存

| トラックバック(0)

ASP.NETでアップロードされたファイルをJPEGで保存するという単純なお仕事。

そのままImageFormat.Jpegで保存すると画質がイマイチなので、品質を指定して保存することに。

が、なぜか「使用されたパラメータが有効ではありません。」と言われてしまう・・・。


使用したコードはこんなかんじ。


using (Image img = Image.FromStream(upload.PostedFile.InputStream))
using (EncoderParameters eps = new EncoderParameters(1))
{
    eps.Param[0] = new EncoderParameter(Encoder.Quality, 95); //品質を指定
    ImageCodecInfo ici = GetEncoderInfo("image/jpeg");
    img.Save("保存先", ici, eps);
}

GetEncoderInfoメソッドは別に用意。コードはよくお世話になっているDOBON.NET様のコードを参考にいたしました。

http://dobon.net/vb/dotnet/graphics/encoderparameters.html

記事を見る限りは、サンプルのコードでうまくいっているようなのだけど、wiz.のところだと先のエラーが発生する。

品質を指定しなければちゃんと保存できる(もちろん画質は悪いまま)

また、PNGで保存する分には問題ない(てかPNGではQualityを無視してる?)


で、結局何が原因だったかというと、品質の値"95"をint(VBではInteger)で指定していたことだったらしい。Microsoftのサンプルに倣って、long(VBではLong)で指定したらちゃんと保存されました。

時間がたつと忘れそうなので書き残しておくことにしましたです。

トラックバック(0)

トラックバックURL: /mt/mt-tb.cgi/58