【发布时间】:2009-11-24 21:56:54
【问题描述】:
我可以用 asp.net 创建圆形图像吗?请指教。我的要求是上传任何图像并获得创建的 bu asp.net 的圆形版本。我正在使用 .Net 框架 3.5,Visual Studio .net 2008。
非常感谢。
【问题讨论】:
-
这能解决您的问题吗? forums.asp.net/p/942160/1130380.aspx
我可以用 asp.net 创建圆形图像吗?请指教。我的要求是上传任何图像并获得创建的 bu asp.net 的圆形版本。我正在使用 .Net 框架 3.5,Visual Studio .net 2008。
非常感谢。
【问题讨论】:
正如其他答案所建议的那样,使用 GDI+ 进行绘图和图像处理很简单。
但请注意,这是一条不受支持的路径,正如 this MSDN article 所述(强调由我自己添加)。
System.Drawing 命名空间中的类不支持在 Windows 或 ASP.NET 服务中使用。尝试在其中一种应用程序类型中使用这些类可能会产生意想不到的问题,例如服务性能下降和运行时异常。
我已经多次在 ASP.NET 应用程序中成功使用 GDI+,从未遇到过任何问题,但我想知道它是件好事。
【讨论】:
您至少可以使用 GDI+ 做到这一点。一个简短的回答:使用 .Graphics.SetClip() 设置您想要的形状,然后绘制您的图像。剪切区域之外的所有内容都将被剪掉。
这里有一篇文章讨论了一种可以使角落更平滑(如果您愿意,甚至可以使边缘变得柔和)的方法:http://danbystrom.se/2008/08/24/soft-edged-images-in-gdi/
【讨论】:
首先,您必须为自己找到一个可以对图像执行此类操作的库。 我在 CodeProject http://www.codeproject.com/KB/GDI-plus/rounded_corners.aspx 上找到了一些东西,但我不确定这是否适用于 asp.net(这基本上是你应该用谷歌搜索的东西)。
然后,当您拥有一个库时,您可以上传文件,并在上传文件时检查 MIME 类型,尝试打开它并使用该库。
【讨论】:
您没有提到这是否是网络,但您是否考虑过使用 css 和/或 javascript 对图像进行四舍五入?一旦删除了该图像细节,就无法恢复!如果客户以后想要不同的剪辑形状怎么办?
【讨论】: