Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 试图编写代码以降低图像分辨率,并在上载图像文件后尽可能降低质量_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

C# 试图编写代码以降低图像分辨率,并在上载图像文件后尽可能降低质量

C# 试图编写代码以降低图像分辨率,并在上载图像文件后尽可能降低质量,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,可能重复: 在用户从FileUpload上传图像并将其保存在服务器上(减小大小)之后,我总是在应用程序上使用的代码很好。但是,当我在photoshop上做同样的事情(手动)并在facebook上上传文件时,质量会更好,而且缩小的大小也很公平 我只是不知道如何才能提高我上传到服务器上的图像的质量,有人使用不同的方法吗 见下面的代码: private static byte[] ReturnReducedImage(byte[] original, int width, int h

可能重复:

在用户从FileUpload上传图像并将其保存在服务器上(减小大小)之后,我总是在应用程序上使用的代码很好。但是,当我在photoshop上做同样的事情(手动)并在facebook上上传文件时,质量会更好,而且缩小的大小也很公平

我只是不知道如何才能提高我上传到服务器上的图像的质量,有人使用不同的方法吗

见下面的代码:

        private static byte[] ReturnReducedImage(byte[] original, int width, int height)
    {
        Image img = RezizeImage(Image.FromStream(BytearrayToStream(original)), width, height);
        MemoryStream ms = new MemoryStream();
        img.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
        return ms.ToArray();
    }


    private static Image RezizeImage(Image img, int maxWidth, int maxHeight)
    {
        if (img.Height < maxHeight && img.Width < maxWidth) return img;
        Bitmap cpy = null;
        using (img)
        {
            Double xRatio = (double)img.Width / maxWidth;
            Double yRatio = (double)img.Height / maxHeight;
            Double ratio = Math.Max(xRatio, yRatio);
            int nnx = (int)Math.Floor(img.Width / ratio);
            int nny = (int)Math.Floor(img.Height / ratio);
            cpy = new Bitmap(nnx, nny);
            using (Graphics gr = Graphics.FromImage(cpy))
            {
                gr.Clear(Color.Transparent);
                gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
                gr.DrawImage(img, new Rectangle(0, 0, nnx, nny), new Rectangle(0, 0, img.Width, img.Height), GraphicsUnit.Pixel);
            }
        }
        return cpy;
    }
private static byte[]ReturnReducedImage(byte[]original,int-width,int-height)
{
图像img=RezizeImage(Image.FromStream(BytearrayToStream(原始)),宽度,高度);
MemoryStream ms=新的MemoryStream();
保存(ms,System.Drawing.Imaging.ImageFormat.Png);
返回ToArray女士();
}
私有静态图像RezizeImage(图像img、int-maxWidth、int-maxHeight)
{
if(img.Height
我相信这回答了这个问题:

您将要替换此:

using (Graphics gr = Graphics.FromImage(cpy))
{
    gr.Clear(Color.Transparent);
    gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
    gr.DrawImage(img, new Rectangle(0, 0, nnx, nny), new Rectangle(0, 0, img.Width, img.Height), GraphicsUnit.Pixel);
}
比如说:

using (Graphics gr = Graphics.FromImage(cpy))
{
    gr.Clear(Color.Transparent);
    gr.SmoothingMode = SmoothingMode.AntiAlias;
    gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
    gr.PixelOffsetMode = PixelOffsetMode.HighQuality;
    gr.DrawImage(img, new Rectangle(0, 0, nnx, nny));
}
干杯。

你可能想看看……这是一个有用的图书馆