【问题标题】:How to generate a random image of specified file size (e.g. x Kb) using NodeJS如何使用 NodeJS 生成指定文件大小(例如 x Kb)的随机图像
【发布时间】:2015-06-05 16:15:11
【问题描述】:

我正在做一些项目,我需要有很多预定义大小的图像文件(最好是 jpg 格式)(不是高度和宽度,而是文件大小以 Kb/Mb 为单位)。

所以我可能需要生成一个 100 KB 大小的随机图像和另一个 2 MB 大小的随机图像。

我应该如何使用 NodeJS 来解决这个问题?

我发现this Random Image Generator code 可以生成随机图像,但它不允许我指定文件大小。

欢迎所有建议和大胆猜测。

【问题讨论】:

    标签: node.js image


    【解决方案1】:

    我不会说节点,但在命令行使用 ImageMagick,这将为您提供一个大的 JPEG 图像:

    convert -size 1000x2000 xc:gray +noise gaussian large.jpg
    

    如果您随后使用-define jpeg:extent=400kb,您将获得一个 400kb 的文件,+/- 一点:

    convert large.jpg -define jpeg:extent=400kb 400kb.jpg
    

    更改400kb 以满足您的需求。如果您想一次性完成所有操作,可以这样做:

    convert -size 1000x2000 xc:gray +noise gaussian jpg: | convert -define jpeg:extent=400kb - 400kb.jpg
    

    在节点中,你可以使用原始接口吗?它看起来像

    im.convert(['-size','1000x2000','xc:gray','+noise','gaussian','output.jpg'],
       function(...)
    

    【讨论】:

    【解决方案2】:

    您需要计算出哪些尺寸和 DPI 将为您提供所需的文件大小。鉴于您似乎不太关心图像的外观,让我们随机选择 100 DPI。

    将占用x 英寸 x y 英寸、100 DPI 的图像

    (100*x)*(100*y)==fileSize
    

    每个颜色通道。如果您正在寻找全彩,则需要其中三个,所以

    3*(100*x)*(100*y)==fileSize
    

    现在您需要输入您的fileSize,为xy 选择一个值,求解另一个值并以y 以100 DPI 生成大小为x 的图像,以生成您的所需的文件大小。

    【讨论】:

    • 感谢您提供的信息。让我试试这个。
    猜你喜欢
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    相关资源
    最近更新 更多