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));
}
干杯。你可能想看看……这是一个有用的图书馆