写真のサイズを変更してトリミングし、結果の画像ファイルを保存する関数を作成しました。私の開発環境では問題なく動作しますが、本番環境では結果の画像が「粗い」ものになります。ここで異なる品質を見ることができますhttp://test.powersport.it/canc2.aspx
サイズ変更およびトリミングされた画像を生成するコードは次のとおりです
// width: width of cropped img - height: height of cropped img
System.Drawing.Bitmap thumbnail = new Bitmap(width, height);
// image: original System.Drawing.Image containing full size img
thumbnail.SetResolution(image.HorizontalResolution, image.VerticalResolution);
// size[0]: width of resized img - size[1]: height of resized image
System.Drawing.Image mini = new Bitmap(image, size[0], size[1]);
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(thumbnail);
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.SmoothingMode = SmoothingMode.HighQuality;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
g.CompositingQuality = CompositingQuality.HighQuality;
g.DrawImage(mini, ((width - size[0]) / 2), ((height - size[1]) / 2), size[0], size[1]);
EncoderParameters encoderParameters;
encoderParameters = new EncoderParameters(1);
ImageCodecInfo[] info = ImageCodecInfo.GetImageEncoders();
// img: original file name
switch (Path.GetExtension(img).ToLower())
{
case ".png": // info[4]
thumbnail.Save(dest, System.Drawing.Imaging.ImageFormat.Png);
break;
case ".bmp": // info[0]
thumbnail.Save(dest, System.Drawing.Imaging.ImageFormat.Bmp);
break;
case ".tiff": // info[3]
encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, (long)EncoderValue.CompressionLZW);
thumbnail.Save(dest, info[3], encoderParameters);
break;
case ".tif": // info[3]
encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, (long)EncoderValue.CompressionLZW);
thumbnail.Save(dest, info[3], encoderParameters);
break;
default: //jpeg info[1]
encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, compression);
thumbnail.Save(dest, info[1], encoderParameters);
break;
}
どんな助けでも大歓迎です。ありがとう。
更新:PNG、BMP、およびTIFFで試しましたが、同じ問題があります