- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 ASP.NET MVC,并且我有一个上传文件的操作。文件正在正确上传。但我想要图像的宽度和高度。我想我需要先将 HttpPostedFileBase
转换为 Image
然后继续。我该怎么做?
如果有其他更好的方法来获取图像的宽度和高度,请告诉我。
最佳答案
我使用Image.FromStream
如下:
Image.FromStream(httpPostedFileBase.InputStream, true, true)
请注意,返回的Image
是IDisposable
。
您需要引用 System.Drawing.dll
才能使其正常工作,并且 Image
位于 System.Drawing
命名空间中.
我不确定你想做什么,但如果你碰巧正在制作缩略图或类似的东西,你可能会对做类似的事情感兴趣......
try {
var bitmap = new Bitmap(newWidth,newHeight);
using (Graphics g = Graphics.FromImage(bitmap)) {
g.SmoothingMode = SmoothingMode.HighQuality;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
g.CompositingQuality = CompositingQuality.HighQuality;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImage(oldImage,
new Rectangle(0,0,newWidth,newHeight),
clipRectangle, GraphicsUnit.Pixel);
}//done with drawing on "g"
return bitmap;//transfer IDisposable ownership
} catch { //error before IDisposable ownership transfer
if (bitmap != null) bitmap.Dispose();
throw;
}
其中 clipRectangle
是您希望缩放到新位图的原始图像的矩形(您需要手动处理宽高比)。 catch block 是构造函数内典型的 IDisposable 用法;您保留新的 IDisposable
对象的所有权,直到它返回为止(您可能需要使用代码注释来记录它)。
不幸的是,默认的“另存为 jpeg”编码器不会公开任何质量控制,并且选择非常低的默认质量。
但是,您也可以手动选择编码器,然后可以传递任意参数:
ImageCodecInfo jpgInfo = ImageCodecInfo.GetImageEncoders()
.Where(codecInfo => codecInfo.MimeType == "image/jpeg").First();
using (EncoderParameters encParams = new EncoderParameters(1))
{
encParams.Param[0] = new EncoderParameter(Encoder.Quality, (long)quality);
//quality should be in the range [0..100]
image.Save(outputStream, jpgInfo, encParams);
}
关于image - 如何将 HttpPostedFileBase 转换为图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1171696/
在我的 MVC 代码中,我得到了一个 httppostedfilebase 类型的图像。我的 SQL 数据库中有相应的图像类型列。 我需要知道如何在我的数据库中将此 httppostedfilebas
在我的 MVC 代码中,我得到了一个 httppostedfilebase 类型的图像。我的 SQL 数据库中有相应的图像类型列。 我需要知道如何在我的数据库中将此 httppostedfilebas
我有一个单元测试,我正在模拟 HttpPostedFileBase 文件并将它们放在列表中。单元测试然后像这样调用邮件服务(不相关的参数,如 to、from、subject 被忽略) [Test] p
我正在尝试使用 MVC 实现上传附件功能。我实际执行上传/保存附件的方法需要 HttpPostedFileBase 类型。 public virtual string Upload(HttpPoste
我有 Kendo ThemeBuilder,在 MVC C# 中创建一个主题,因为我有一个模型,其中包含从 themebuilder 返回的 css body 要将它保存到 css 文件,我可以通过创
我在 HttpPostedFileBase 上遇到错误: The type or namespace name 'HttpPostedFileBase'could not be found(are y
我在带有 CSLA 的分布式环境中使用 MVC .NET,我可以从我的网络层之一(例如 Website.MVC)引用 HttpPostedFileBase,但我不能从单独的层(我们称之为 OtherL
在我的Create View中我有 @using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl, FormMethod.Post, encty
我正在使用 ASP.NET MVC,并且我有一个上传文件的操作。文件正在正确上传。但我想要图像的宽度和高度。我想我需要先将 HttpPostedFileBase 转换为 Image 然后继续。我该怎么
在我的Create View 我有 @using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl, FormMethod.Post, encty
我的客户端javascript代码是 function SendMail() { debugger; var decpr = tinyMCE.get('taskdesc
我正在开发一个 ASP.NET MVC 4 应用程序,在许多 View 中用户可以上传我保存在服务器上的文件。除此之外,我还有一个单独的实体,用于保存上传文件的不同数据,例如: string fi
如果我禁用客户端验证 并尝试上传一个大约 11 MB 的文件,将文件设置为 HttpPostedFileBase memeber [ValidateFile] public Htt
我正在使用 C# 开发一个 ASP.NET MVC 项目,试图将文档从表单上传到我的数据库。我目前在我的 Controller 中,我已将文件导入为 HttpPostedFileBase,并且必须将其
有没有一种简单的方法可以从 HttpPostedFileBase 中获取 FileInfo 对象?我意识到我可以保存文件,然后执行类似 DirectoryInfo.GetFiles 的操作,然后循环遍
那么,场景是这样的:用户上传文件,我的代码将此文件转换为字节数组,然后将该数组传递给外部 API。这很好用。 问题是这个文件包含了像æ,ø,å这样的特殊字符,当byte[]再次转换成字符时,这些字符被
我无法弄清楚我做错了什么,但由于某种原因 HttpPostedFileBase 总是返回 null。当我尝试在服务器端上传文件时,我继续使用 HttpPosterFileBase 获取 null:这是
我正在尝试创建一种方法,我可以在其中传递图像文件并检索该图像文件的字节,以便稍后我可以将字节存储在数据库中。这是我的方法代码。 private byte[] GetImageBytes(HttpPos
我正在尝试在 ASP.NET MVC 中上传单个 .csv 文件。在我的 .ascx 文件中,我有:  
我必须使用具有如下方法的网络服务: SubmitUser(UserReg user, HttpPostedFileBase image) { // webservice side process
我是一名优秀的程序员,十分优秀!