0

サイズ変更された画像をストリーミングするためにasp.net mvc 3を使用しています。しかし、スムージングモードと補間モードをhighbiqubicに設定したにもかかわらず、画像の出力は灰色がかってぼやけています。

public ActionResult ImageTEST(int fileID, int width, int height)
{
    var file = _fileRep.GetFile(fileID);
    byte[] newFile;

    float ratioX = (float)width / (float)file.Width;
    float ratioY = (float)height / (float)file.Height;
    float ratio = Math.Min(ratioX, ratioY);

    int newWidth = (int)(file.Width * ratio);
    int newHeight = (int)(file.Height * ratio);

    using (var resizedImage = new Bitmap(newWidth, newHeight))
    {
        using (var source = new Bitmap(new MemoryStream(file.FileContent)))
        {
            using (var g = Graphics.FromImage(resizedImage))
            {
                g.SmoothingMode = SmoothingMode.HighQuality;
                g.InterpolationMode = InterpolationMode.HighQualityBicubic;
                g.DrawImage(source, 0, 0, newWidth, newHeight);
            }
        }

        using (var ms = new MemoryStream())
        {
            resizedImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);

            newFile = ms.ToArray();
        }
    }

    return new FileContentResult(newFile, "image/jpeg");
}

結果:

ここに画像の説明を入力

右はまったく同じ写真ですが、Photoshop でサイズを変更しています。

これを調整して、品質を大幅に向上させるにはどうすればよいですか?

4

1 に答える 1

1

まず、高画質で保存してみてください。

EncoderParameters ep = new EncoderParameters(); 
ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)100); 
foo.Save(filename, ici, ep);

それが満足できない場合は、Emgu cv などの他のライブラリを使用する必要があるかもしれません。

グレーの問題は、元の画像と保存した画像の色空間 (AdobeRGB または sRGB) が異なることが原因である可能性があります。

于 2013-05-28T10:06:40.323 に答える