相关疑难解决方法(0)

在C#中验证文件中的图像

我正在从文件中加载图像,我想知道在从文件中完全读取图像之前如何验证图像.

string filePath = "image.jpg";
Image newImage = Image.FromFile(filePath);
Run Code Online (Sandbox Code Playgroud)

当image.jpg不是真正的jpg时会出现问题.例如,如果我创建一个空文本文件并将其重命名为image.jpg,则在加载image.jpg时将抛出OutOfMemory Exception.

我正在寻找一个功能,它将在给定图像的流或文件路径的情况下验证图像.

示例函数原型

bool IsValidImage(string fileName);
bool IsValidImage(Stream imageStream);
Run Code Online (Sandbox Code Playgroud)

.net c# file-io image

51
推荐指数
7
解决办法
8万
查看次数

确定上传的文件是否是MVC上的图像(任何格式)

所以我正在使用此代码进行查看:

<form action="" method="post" enctype="multipart/form-data">

  <label for="file">Filename:</label>
  <input type="file" name="file" id="file" />

  <input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

这适用于型号:

[HttpPost]
public ActionResult Index(HttpPostedFileBase file) {

  if (file.ContentLength > 0) {
    var fileName = Path.GetFileName(file.FileName);
    var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
    file.SaveAs(path);
  }

  return RedirectToAction("Index");
}
Run Code Online (Sandbox Code Playgroud)

除非用户添加不是图像的文件,否则效果很好.如何确保上传的文件是图像.谢谢

c# asp.net-mvc razor

51
推荐指数
5
解决办法
6万
查看次数

测试文件是否为图像文件

我正在使用一些文件IO,想知道是否有方法来检查文件是否是图像?

java io image file

32
推荐指数
5
解决办法
5万
查看次数

如何确定文件是否是.NET中的图像文件?

我不想依赖文件扩展名.我不知道它是什么类型的图像(.jpg,.png等),我只是想知道文件是否是图像.如果可能的话,我宁愿不使用任何非.NET dll.

我知道如何做到这一点的最好方法如下:

bool isImageFile;
try
{
    Image.FromFile(imageFile).Dispose();
    isImageFile = true;
}
catch (OutOfMemoryException)
{
    isImageFile = false;
}
Run Code Online (Sandbox Code Playgroud)

如上所述:http://msdn.microsoft.com/en-us/library/stf701f5.aspx,如果文件不是有效的图像格式,则Image.FromFile()抛出一个OutOfMemoryException.使用上面给出了我想要的结果,但是由于以下原因我不想使用它:

  • 我认为,出于性能原因,使用try-catches进行正常程序执行是一种不好的做法.
  • Image.FromFile()将整个图像文件(如果是图像文件)加载到内存中.这是浪费我假设因为我只需要文件类型,并且在我的代码中此时不需要进行任何进一步的图像处理.
  • 我不喜欢捕捉OutOfMemoryExceptions,因为如果有一个真正的内存不足问题,我的程序吞下它并继续前进?

有没有更好的方法来做到这一点?或者,我上面列出的任何/所有问题都是无根据的?

编辑:自从收到答案后,这些是我现在知道的三个解决方案:

  1. 通过Image.FromFile()try-catch 将整个图像加载到内存中.
    • 优点:对图像文件内容进行更深入的检查; 涵盖了许多图像类型.
    • 缺点:最慢; 从try-catch开始并将完整的映像文件加载到内存中; 捕获'真实'OutOfMemoryException的潜在危险.
  2. 检查图像文件的标题字节.
    • 优点:快速,低内存使用率.
    • 缺点:可能脆弱; 需要为每种文件类型编程.
  3. 检查文件扩展名.
    • 优点:最快; 最简单的.
    • 缺点:不适用于所有情况; 最容易出错.

(我没有看到明确的"赢家",因为我可以想象每个人都适合的情况.对于我的应用程序的目的,文件类型检查不经常发生,方法1的性能问题不是问题.)

.net file-format file-type image

18
推荐指数
2
解决办法
4415
查看次数

尽管.BMP扩展,确定图像是否为PNG

我想检查目录中的图像是否为png类型但具有扩展名.bmp.以下确定它是否是.bmp扩展名

 string x = Path.GetExtension(file);
Run Code Online (Sandbox Code Playgroud)

由此我们确定其扩展是.bmp.现在问题在于检查它是否是png格式.我被困在这一部分.

我这样做的原因是因为我希望我的图像透明,而.bmp图像不能很好地工作.谢谢!

c# image

2
推荐指数
1
解决办法
2127
查看次数

如何在上传时扫描并删除恶意文件?

此时上传恶意文件时需要扫描并删除该文件。NPM中有什么特殊的包吗?您能帮我解决这个问题吗?先谢谢了。

node.js express

0
推荐指数
1
解决办法
5467
查看次数

标签 统计

image ×4

c# ×3

.net ×2

asp.net-mvc ×1

express ×1

file ×1

file-format ×1

file-io ×1

file-type ×1

io ×1

java ×1

node.js ×1

razor ×1