【问题标题】:How to detect corrupted image files in Node.js?如何检测 Node.js 中损坏的图像文件?
【发布时间】:2016-05-07 06:25:55
【问题描述】:

我正在寻找一些通用库来检查下载的图像是否没有损坏。

我找到了使用 ImageMagick 的 https://www.npmjs.com/package/gm

我可以使用 ImageMagick 中的identify 来查找完全损坏的图像(我什至无法打开的图像)。但也有部分损坏的图像 - 例如 jpeg 文件,其中一半图像为灰色,并且没有被 gm 标记为损坏。

如何检查 node.js 中的图像是否损坏?

谢谢!

编辑:

我想检测的是未完全下载的图像。您可以通过切割最后 n 个字节的图像来实现类似的效果。

我想可以通过编程方式检测到它,因为在详细模式下识别推荐返回:

identify: Premature end of JPEG file broken_example.jpg' @ warning/jpeg.c/JPEGWarningHandler/352.
identify: Corrupt JPEG data: premature end of data segment broken_example.jpg' @ warning/jpeg.c/JPEGWarningHandler/352.

示例(不幸的是 imgur 会截断损坏的图像,所以我不得不上传截图):

Broken image

【问题讨论】:

  • 那些图像是否可以通过编程首先被识别为损坏?也许上传一个例子..
  • 感谢您的评论。我已经编辑了帖子
  • 一张错误的照片并不能帮助我们修复错误(坏字节)...请使用一些免费的文件共享网站(如 mega.nz )和在那里上传文件。或者您可以通过 onlinehexeditor.com 打开文件(仅复制从 00 到 0f 的蓝色中间部分)然后将这些字节值粘贴到 pastebin.com 并共享链接.无论哪种方法,请上传(1)完全损坏和(2)部分损坏的示例?
  • PS:如果您愿意尝试 PHP(您已经安装了它?)而不是 Node.js,那么我会尝试向您展示一个可能的解决方案。这意味着使用 PHP 读取文件的字节并检查错误。首先只需要 2 个示例即可查看我们要查找的内容...

标签: javascript node.js image-processing png jpeg


【解决方案1】:

使用: https://www.npmjs.com/package/is-corrupted-jpeg

var isCorrupted = require('is-corrupted-jpeg');
console.log(isCorrupted('./path/to/image/not-corrupted.jpg'));
//=> true
console.log(isCorrupted('./path/to/image/corrupted.jpg'));
//=> false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多