图像调整大图像,但填充较小的图像

时间:2011-05-11 19:04:41

标签: asp.net

我需要为ASP.Net找到一个.Net解决方案,其中大于给定大小的图像按比例缩小,但较小的图像将在较小尺寸的图像中居中在白色背景上。任何想法或帮助表示赞赏。

3 个答案:

答案 0 :(得分:2)

ImageResizer支持此:

<img src="image.jpg?width=500&height=300&mode=pad&scale=canvas" />

您还可以使用&bgcolor=color|hex调整背景颜色,或使用&format=png来提高透明度。

答案 1 :(得分:0)

ImageMagick(可用作免费和开源软件)可以轻松地执行您使用命令行选项描述的内容。听起来你想要一个能完成同样事情的.NET库。我不知道任何问题,但我敢打赌,如果您使用Google for .NET图像处理库,您会找到一些,然后您将能够完成您需要的工作。

答案 2 :(得分:0)

此帖http://www.codeproject.com/Articles/2941/Resizing-a-Photographic-image-with-GDI-for-NET中的第二个示例(示例#2 - 缩放到固定大小)显示了如何使用.net System.Drawing执行您(和我)所需的操作。

我还发现了使用ImageMagick实现结果的命令:

convert input.png -resize 150x150 -background white -compose Copy -gravity center -extent 150x150 -quality 92 output3.png

但我发现ImageMagickNet是.Net的ImageMagick的包装器,没有更新,也没有关于某些命令的文档;我发现了如何调整图像的大小和范围,但我找不到如何设置背景颜色,重力和其他配置。 CodePlex页面有一些讨论,但答案很少(http://imagemagick.codeplex.com/)

ImageMagickNET.MagickNet.InitializeMagick();
ImageMagickNET.Image img = new ImageMagickNET.Image("c:\\images\\input.png");
ImageMagickNET.Geometry geometry = new ImageMagickNET.Geometry("150x150");
img.Resize(geometry);
img.Compose(CompositeOperator.CopyCompositeOp);
img.Extent(geometry);
img.Write("c:\\images\output.png");

运行ImageMagickNET有一些技巧,但您可以在codeplex或stackoverflow上轻松找到它们。 所以我的建议是:使用System.Drawing!