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

Posted

技术标签:

【中文标题】c#为较小的图像生成缩略图【英文标题】:c# generate thumbnail for smaller image 【发布时间】:2018-10-28 22:31:54 【问题描述】:

在我的项目中,我想从用户上传的图像生成缩略图并将其显示在画廊中(显示在大小为 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 框中正确显示?

【问题讨论】:

这个问题几乎与 c# 和 asp.net 无关,因为它们与缩略图无关。一切都与您网站的 UI/UX 有关。 如果源图像比缩略图小,则首先不需要缩略图。或者您只是使用原始图像作为您的缩略图。缩略图背后的整个想法是通过显示更小的预览图像来节省网络负载。如果图像已经足够小,那不重要。 此主题可能对您有所帮助。 Create thumbnail image Create thumbnail image的可能重复 【参考方案1】:

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

【讨论】:

以上是关于c#为较小的图像生成缩略图的主要内容,如果未能解决你的问题,请参考以下文章

使用 C# System.Drawing 生成缩略图时居中裁剪图像

sh 展平Docker图像并重新导入为较小的图像

GD图像处理——缩略图的实现

JPG批量裁剪以生成方形缩略图

将图像和缩略图一起上传,但未生成缩略图

尝试在悬停时更改图像但获得 $var.attr 不是函数错误