在上一篇《C#图片处理类》中,介绍了一个C#图片处理类,这个类源于网上的一个开源类,在这里我对生成缩略图的方法做了较大的调整,主要参照微信小程序的image图片组件的处理办法。如下:

在生成缩略图的时候,一共提供了13种方法,共分为两组:缩放(4种)、剪裁(9种):
出来的效果如下:
原图

AspectFill
缩放 保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取。

AspectFit
缩放 保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来。

Bottom
裁剪 不缩放图片,只显示图片的底部区域

BottomLeft
裁剪 不缩放图片,只显示图片的左下边区域

BottomRight
裁剪 不缩放图片,只显示图片的右下边区域

Center
裁剪 不缩放图片,只显示图片的中间区域

Left
裁剪 不缩放图片,只显示图片的左边区域

Right
裁剪 不缩放图片,只显示图片的右边区域

ScaleToFill
缩放 不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素

Top
裁剪 不缩放图片,只显示图片的顶部区域

TopLeft
裁剪 不缩放图片,只显示图片的左上边区域

TopRight
裁剪 不缩放图片,只显示图片的右上边区域

WidthFix
缩放 宽度不变,高度自动变化,保持原图宽高比不变

其中,使用AspectFit方式缩放时,可能会出现黑边的情况,可以保存为png格式。C# GDI绘制透明图片背景,可参照这里:C#绘制图片设置背景透明。
完整的示例从这里下载:
Mirthsoft.Image.Test.rar (38.85 kb)