C# 如何在文件夹中保存图像时调整图像大小

C# 如何在文件夹中保存图像时调整图像大小,c#,asp.net,image,C#,Asp.net,Image,我有一个(600*800大小)或任意大小的图像文件。现在我需要将它们转换成大小为****(110*110)的thubnail图像大小**** 但是如果我缩小图像的大小,我就不应该改变图像的质量。一旦我们缩小图像大小,图像的质量就消失了 有没有办法在不影响图像质量的情况下将它们转换为缩略图[在.net中有没有内置的类] 任何帮助都是非常好的当您缩小图像时,您不会降低图像质量,只有当您尝试将其从缩小版本恢复到原始大小时,质量才会受到影响。当您缩小图像时,您不会降低图像质量,只有当您尝试将其从缩小版本

我有一个(600*800大小)或任意大小的图像文件。现在我需要将它们转换成大小为****(110*110)的thubnail图像大小****

但是如果我缩小图像的大小,我就不应该改变图像的质量。一旦我们缩小图像大小,图像的质量就消失了

有没有办法在不影响图像质量的情况下将它们转换为缩略图[在.net中有没有内置的类]


任何帮助都是非常好的

当您缩小图像时,您不会降低图像质量,只有当您尝试将其从缩小版本恢复到原始大小时,质量才会受到影响。

当您缩小图像时,您不会降低图像质量,只有当您尝试将其从缩小版本恢复到原始大小时rsion质量会受到影响。

好吧,关于如何做,有一个有趣的材料可能会帮助你

关于质量损失,如果你指的是分辨率,那就没有办法,只要你缩小一幅图像,你就丢掉了无法重建的空间信息。当然,如果你使用某种插值,但它永远不会与原始图片相同

您可以做的是存储每个版本的一个版本

下面是从链接中获得的代码,老实说,我认为从位图b=新位图(destWidth,destHeight)开始的最后5行代码足以解决您的问题

private static Image resizeImage(Image imgToResize, Size size)
{
   int sourceWidth = imgToResize.Width;
   int sourceHeight = imgToResize.Height;

   float nPercent = 0;
   float nPercentW = 0;
   float nPercentH = 0;

   nPercentW = ((float)size.Width / (float)sourceWidth);
   nPercentH = ((float)size.Height / (float)sourceHeight);

   if (nPercentH < nPercentW)
      nPercent = nPercentH;
   else
      nPercent = nPercentW;

   int destWidth = (int)(sourceWidth * nPercent);
   int destHeight = (int)(sourceHeight * nPercent);

   Bitmap b = new Bitmap(destWidth, destHeight);
   Graphics g = Graphics.FromImage((Image)b);
   g.InterpolationMode = InterpolationMode.HighQualityBicubic;

   g.DrawImage(imgToResize, 0, 0, destWidth, destHeight);
   g.Dispose();

   return (Image)b;
}
private static Image resizeImage(图像imgToResize,大小)
{
int sourceWidth=imgToResize.Width;
int sourceHeight=imgToResize.Height;
浮动百分比=0;
浮动nPercentW=0;
浮点数nPercentH=0;
nPercentW=((float)size.Width/(float)sourceWidth);
nPercentH=((浮点)size.Height/(浮点)sourceHeight);
如果(nPercentH
好吧,关于如何做,有一个有趣的材料可能会帮助你

关于质量损失,如果你指的是分辨率,那就没有办法,只要你缩小一幅图像,你就丢掉了无法重建的空间信息。当然,如果你使用某种插值,但它永远不会与原始图片相同

您可以做的是存储每个版本的一个版本

下面是从链接中获得的代码,老实说,我认为从位图b=新位图(destWidth,destHeight)开始的最后5行代码足以解决您的问题

private static Image resizeImage(Image imgToResize, Size size)
{
   int sourceWidth = imgToResize.Width;
   int sourceHeight = imgToResize.Height;

   float nPercent = 0;
   float nPercentW = 0;
   float nPercentH = 0;

   nPercentW = ((float)size.Width / (float)sourceWidth);
   nPercentH = ((float)size.Height / (float)sourceHeight);

   if (nPercentH < nPercentW)
      nPercent = nPercentH;
   else
      nPercent = nPercentW;

   int destWidth = (int)(sourceWidth * nPercent);
   int destHeight = (int)(sourceHeight * nPercent);

   Bitmap b = new Bitmap(destWidth, destHeight);
   Graphics g = Graphics.FromImage((Image)b);
   g.InterpolationMode = InterpolationMode.HighQualityBicubic;

   g.DrawImage(imgToResize, 0, 0, destWidth, destHeight);
   g.Dispose();

   return (Image)b;
}
private static Image resizeImage(图像imgToResize,大小)
{
int sourceWidth=imgToResize.Width;
int sourceHeight=imgToResize.Height;
浮动百分比=0;
浮动nPercentW=0;
浮点数nPercentH=0;
nPercentW=((float)size.Width/(float)sourceWidth);
nPercentH=((浮点)size.Height/(浮点)sourceHeight);
如果(nPercentH