【问题标题】:how to tile a single cloned image graphic magic如何平铺单个克隆图像图形魔术
【发布时间】:2019-05-02 23:41:57
【问题描述】:

我想使用 graphicsmagick 创建一个具有宽度和高度平铺的单个图像的图像。

我试过这个有效的命令:

gm montage -geometry 2x2 mypic.png mypic.png mypic.png out.png

但是,我想多次重复此图案图像(超过 100x100)。

是否有可能在不重复mypic.png 10000 次的情况下做到这一点?

【问题讨论】:

    标签: image-processing imagemagick graphicsmagick


    【解决方案1】:

    我不知道 GraphicsMagick。但我认为它类似于 ImageMagick,因为它是 ImageMagick 的衍生产品。在 ImageMagick 中,您可以通过两种方式轻松做到这一点:

    输入:

    montage lena.jpg -duplicate 24 -tile 5x5 -geometry +0+0 result.jpg
    


    convert -size 1280x1280 tile:lena.jpg result2.jpg
    


    https://imagemagick.org/Usage/canvas/#tile查看各种平铺方法

    我不确定 GraphicsMagick 是否有 -duplicate,因为它是在 ImageMagick 6.6.8-10 3/27/2011 分离后很久才引入的。

    ImageMagick 比 GraphicsMagick 有更多的功能,但可能会稍微慢一些。您可能需要考虑使用 ImageMagick 而不是 GraphicMagick

    【讨论】:

    • 两者不一样,有不同的特点和语法。因此,您可能必须使用 ImageMagick,除非其他人可以为您提供 GraphicsMagick 的等效命令。我怀疑GraphicsMagick 没有-duplicate。 GraphicsMagick 是 ImageMagick 的早期衍生产品,并且停止了开发。鉴于 ImageMagick 不断开发新功能并进行改进。
    【解决方案2】:

    您没有说您计划制作的图像有多大,但如果它们非常大,您可能会遇到一些问题。

    首先,JPEG 被限制为 65536 x 65536 像素,因此如果您需要更大的尺寸,则需要 bigtiff 或 PNG 之类的东西。

    其次,您可能需要大量内存来合成大图像。例如,在这台笔记本电脑上我可以运行:

    $ time convert -size 50000x50000 tile:k2.jpg result.jpg
    real    6m11.366s
    user    1m19.671s
    sys 0m20.836s
    

    在大约 6m 内制作 50k x 50k 像素的 JPG。

    convert 将在开始写入结果之前组装整个图像。如果您没有大量的 RAM,它将使用一个巨大的临时文件。如果我在处理过程中查看/tmp,我会看到:

    $ ls -l /tmp
    total 1199684
    -rw------- 1 john john 20000000000 Dec  1 15:56 magick-9559WtN2jwPlvrMm
    

    一个 20GB 的临时文件。那是 50000 * 50000 * 4 * 2,所以它正在制作一个 16 位、四通道的临时图像。因为convert 将所有时间都花在磁盘 IO 上,所以速度相当慢。

    您可以考虑其他系统——libvips 是一个流式图像处理库,因此它可以执行这样的命令而无需制作完整的中间图像。我明白了:

    $ time vips replicate k2.jpg result.jpg 35 25
    real    0m13.592s
    user    0m16.383s
    sys 0m1.426s
    $ vipsheader result.jpg 
    result.jpg: 50750x51200 uchar, 3 bands, srgb, jpegload
    

    这是将k2.jpg 水平复制35 次,垂直复制25 次,以使图像略大于50k x 50k。它不会创建临时文件,并在大约 15 秒内完成。对于非常非常大的输出图像,它不会有任何问题——我经常处理 300,000 x 300,000 像素的图像(尽管显然不是 jpg 格式)。

    【讨论】:

    • 约翰,考虑潜在的大输出图像的好点!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 2011-07-06
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多