使用一个小库和一些图像/照片构建美丽的马赛克图像

2020-06-17 02:30:05

从您指定的原始图像创建美丽的马赛克图像,并且由您还提供的许多小图像/照片组成!

从';fs';import Photosaic from';Phoosaic';const mosaic=Photosaic(`./targetMosaicImg.png`,[`./subImg1.png`,`./subImg2.png`,`./subImg2.png`,])const finalMosaicBuffer=aWait Mosaic。build()等待fs。承诺。writeFile(`./finalMosaic.png`,finalMosaicBuffer)。

type PhotosaicImage=string|buffer|Readable:Photosaic使用的图像";的主要抽象。

Photosaic(sourceImg,subImages,Options?):Factory函数包含构建镶嵌选项的功能?:您可以提供其他选项来自定义创建的输出镶嵌选项。gridNum?:number=10:最终镶嵌将由子图像的gridNum x gridNum格网组成。

options.intenity?:number=0.5:介于0-1之间的数字,指示子图像上着色的不透明度,以帮助使输出图像更清晰。0是完全透明的(子图像将无法辨认),1是完全不透明的(主图像将无法看到)。在大多数情况下,默认值0.5应该没有问题。

options.outputWidth?:number=400:输出马赛克宽度的像素数(高度将自动缩放)。宽度越大,马赛克越大,最终马赛克的尺寸也越大。输出越大,生成镶嵌所需的时间就越长。

根据提供的选项(特别是gridNum和outputWidth)以及您正在运行以构建马赛克的硬件,Photoosaic.build()可能需要几到几十分钟才能完成。因此,Photoosaic有一个EventEmitter,Phoosaic.emitter您可以监听处理事件,以获取正在构建的马赛克的进度。

常量Photosaic=Photosaic(源、子图像、选项)Photosaic。发射器。在(';正在处理';,(迭代)=>;{控制台。log(`当前正在处理';${iteration}';subImage for the mosaic`)})等待拼图。Build()//当前正在处理马赛克的';1&39;子图像//当前正在处理马赛克的';2';子图像//当前正在处理马赛克的';3';子图像//.