如何使用NodeJS生成指定文件大小(例如x Kb)的随机图像

时间:2015-06-05 16:15:12

标签: node.js image

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

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

我应该如何使用NodeJS进行此操作?

我发现this Random Image Generator code生成了一个随机图片,但它不允许我指定文件大小。

欢迎所有建议和猜测。

2 个答案:

答案 0 :(得分:2)

我不会说节点,但是在使用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(...)

答案 1 :(得分:1)

您需要确定哪些尺寸和DPI会为您提供所需的文件大小。鉴于你似乎并不太关心图像的样子,让我们伪随机选择100 DPI。

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

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

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

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

现在您需要放入fileSize,选择xy的值,求解其他值并生成x的图片{ {1}}在100 DPI时生成所需的文件大小。