私は大砲のデジタルカメラを持っていて、それを超高品質で写真を撮るように設定しました、そしてそれは3メガのサイズの.jpgファイルを出力します。このようにASP.NETにロードすると(これは、dpi解像度を変更したり、トリミングしたりするのに便利です)
imgPicture = Image.FromFile(Config.WorkDirectory + this.TempPhotoName);
bmpPicture = new Bitmap(imgPicture);
そして、私はそれをこのように再び保存します:
bmpModified.Save(Config.WorkDirectory + this.TempPhotoName,System.Drawing.Imaging.ImageFormat.Jpeg);
わずか700KB程度のサイズのjpgを出力します。品質が低下します。
私も次のように保存してみました:
bmpPicture.Save(Config.WorkDirectory + this.TempPhotoName, codecJpeg, encparams);
ここで、codecJpegは
ImageCodecInfo codecJpeg = this.getEncoderInfo("image/jpeg");
private ImageCodecInfo getEncoderInfo(string mimeType)
{
// Get image codecs for all image formats
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
// Find the correct image codec
for (int i = 0; i < codecs.Length; i++)
if (codecs[i].MimeType == mimeType)
return codecs[i];
return null;
}
およびencparams:
EncoderParameters encparams = new EncoderParameters(1);
encparams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 97L);
このようにしてサイズ(そして品質も疑わしい)は維持されますが、私は手作業で品質を入力しています。
聞きたい:
品質値をハードコーディングせずに、ロードされたのと同じ品質で画像を保存する方法はありますか?
前もって感謝します