Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用节点sharp(libvips)附加图像_Node.js_Image_Vips - Fatal编程技术网

Node.js 使用节点sharp(libvips)附加图像

Node.js 使用节点sharp(libvips)附加图像,node.js,image,vips,Node.js,Image,Vips,我想使用VIP将许多较小图像的目录附加到一个海量图像中。节点模块“sharp”使用libvips。有没有办法使用夏普将两幅图像附加在一起?VIP有一个“LRJOIN”功能,但我没有看到它的清晰实现 我真的只是想知道最快的方式,让贵宾附加一个目录的图像到一个大TIFF。由于内存问题,图像太大,无法使用ImageMagick等 编辑: 我使用ruby VIP加入图像,并调用VIP命令行工具来生成DZI #!/usr/bin/ruby require 'rubygems' require 'vips

我想使用VIP将许多较小图像的目录附加到一个海量图像中。节点模块“sharp”使用libvips。有没有办法使用夏普将两幅图像附加在一起?VIP有一个“LRJOIN”功能,但我没有看到它的清晰实现

我真的只是想知道最快的方式,让贵宾附加一个目录的图像到一个大TIFF。由于内存问题,图像太大,无法使用ImageMagick等

编辑:

我使用ruby VIP加入图像,并调用VIP命令行工具来生成DZI

#!/usr/bin/ruby

require 'rubygems'
require 'vips'

a = VIPS::Image.new(ARGV[1])
ARGV[2..-1].each {|name| a = a.tbjoin(VIPS::Image.tiff(name, :compression => :deflated))}                              
a.write("output.tiff", :compression => :deflated)

system("vips dzsave output.tiff '#{ARGV[0]}'/output_dz.zip --overlap=0 --suffix=.jpg")
我在ruby sharp github问题上找到了代码,并对其进行了一些修改。550 4096x256图像的结果(仅连接部分):

real    0m17.283s
user    0m47.045s
sys     0m2.139s

如果Ruby或Python还可以,您可以试试它们。例如:

#!/usr/bin/python

import sys
from gi.repository import Vips

if len(sys.argv) < 3:
    print("usage: join outfile in1 in2 in3 ...")
    sys.exit(1)

def imopen(filename):
    return Vips.Image.new_from_file(filename,
                                    access = Vips.Access.SEQUENTIAL_UNBUFFERED)

acc = imopen(sys.argv[2])
for infile in sys.argv[3:]:
    acc = acc.join(imopen(infile), Vips.Direction.HORIZONTAL,
                   align = "centre",
                   expand = True,
                   shim = 50,
                   background = 255)

acc.write_to_file(sys.argv[1])

显然,大部分时间都花在光盘IO上

或者更好:)只是想确保我没有遗漏任何东西!最后我用ruby VIP制作了一个tiff和dzi。虽然Sharp很棒,但我对在AWS Lambda上运行它非常感兴趣。Re:AWS Lambda,关于如何在Amazon Linux上编译所需的静态库,我遇到了一些问题,因此我使用了Ruby。有趣的是,你花了这么多时间在IO上。这是一个机械硬盘,数据不在缓存中。如果我再次运行该命令,我想只需要3秒。
$ time ../join.py x.tif *.tif
real    0m36.255s
user    0m8.344s
sys 0m3.396s
$ vipsheader x.tif 
x.tif: 204950x2500 uchar, 3 bands, srgb, tiffload