c#为较小的图像生成缩略图

时间:2018-05-18 13:08:13

标签: c# asp.net thumbnails

在我的项目中,我想从用户上传的图像生成缩略图并将其显示在图库中(显示在大小为180 x 250的div框中)。下面是我用来做的代码。

Size thumbnailSize = GetThumbnailSize(img);
System.Drawing.Image thumbnail = img.GetThumbnailImage(thumbnailSize.Width, thumbnailSize.Height, null, IntPtr.Zero);
.....

private Size GetThumbnailSize(System.Drawing.Image original)
    {
        const int maxPixels = 300;

        int originalWidth = original.Width;
        int originalHeight = original.Height;

        double factor;
        if (originalWidth > originalHeight)
        {
            factor = (double)maxPixels / originalWidth;
        }
        else
        {
            factor = (double)maxPixels / originalHeight;
        }

        return new Size((int)(originalWidth * factor), (int)(originalHeight * factor));
    }

我的问题是,生成的缩略图仅适用于大尺寸的图像,当用户上传较小的图像(例如:30 x 30)时,生成的缩略图将放大而不清晰如下所示。那么该怎么做才能生成比例缩略图,无论图像大小,都可以在我的图库div框中正确显示?

Example of thumbnail generated

1 个答案:

答案 0 :(得分:1)

我建议检查图像是否小于您想要的尺寸。如果它不像你那样对待它。如果较小,请将图像数据复制到具有您想要的尺寸的空白图像的中心,并将其显示为缩略图。