【发布时间】:2015-06-05 16:15:11
【问题描述】:
我正在做一些项目,我需要有很多预定义大小的图像文件(最好是 jpg 格式)(不是高度和宽度,而是文件大小以 Kb/Mb 为单位)。
所以我可能需要生成一个 100 KB 大小的随机图像和另一个 2 MB 大小的随机图像。
我应该如何使用 NodeJS 来解决这个问题?
我发现this Random Image Generator code 可以生成随机图像,但它不允许我指定文件大小。
欢迎所有建议和大胆猜测。
【问题讨论】:
我正在做一些项目,我需要有很多预定义大小的图像文件(最好是 jpg 格式)(不是高度和宽度,而是文件大小以 Kb/Mb 为单位)。
所以我可能需要生成一个 100 KB 大小的随机图像和另一个 2 MB 大小的随机图像。
我应该如何使用 NodeJS 来解决这个问题?
我发现this Random Image Generator code 可以生成随机图像,但它不允许我指定文件大小。
欢迎所有建议和大胆猜测。
【问题讨论】:
我不会说节点,但在命令行使用 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(...)
【讨论】:
您需要计算出哪些尺寸和 DPI 将为您提供所需的文件大小。鉴于您似乎不太关心图像的外观,让我们随机选择 100 DPI。
将占用x 英寸 x y 英寸、100 DPI 的图像
(100*x)*(100*y)==fileSize
每个颜色通道。如果您正在寻找全彩,则需要其中三个,所以
3*(100*x)*(100*y)==fileSize
现在您需要输入您的fileSize,为x 或y 选择一个值,求解另一个值并以y 以100 DPI 生成大小为x 的图像,以生成您的所需的文件大小。
【讨论】: