Optimization 如何从不同大小和纵横比的图像中使用ImageMagick制作蒙太奇?

Optimization 如何从不同大小和纵横比的图像中使用ImageMagick制作蒙太奇?,optimization,resize,imagemagick,crop,montage,Optimization,Resize,Imagemagick,Crop,Montage,我有很多图像,不同的大小和纵横比。有可能把它们合成蒙太奇吗?我的意思是,在我为建立一个公共行的图像设置了一个公共高度之后,将它们以最佳方式排列成行。当然,不允许修改图像的纵横比,也不允许在最终蒙太奇或复制中省略任何图像 蒙太奇中图片行的高度通常不相等,但它们的值应保持在最小范围内(在统计意义上),或者换句话说:行高度平均值的标准偏差必须最小化 蒙太奇所需的宽度和高度如(a)所示 或者给出了宽度和允许的比率范围(或等效的高度范围)(b.),例如,宽度必须是1024像素,高度必须是w/h0.8 1.

我有很多图像,不同的大小和纵横比。有可能把它们合成蒙太奇吗?我的意思是,在我为建立一个公共行的图像设置了一个公共高度之后,将它们以最佳方式排列成行。当然,不允许修改图像的纵横比,也不允许在最终蒙太奇或复制中省略任何图像

蒙太奇中图片行的高度通常不相等,但它们的值应保持在最小范围内(在统计意义上),或者换句话说:行高度平均值的标准偏差必须最小化

蒙太奇所需的宽度和高度如(a)所示

或者给出了宽度和允许的比率范围(或等效的高度范围)(b.),例如,宽度必须是1024像素,高度必须是w/h<0.9和w/h>0.8

1.)图像必须按照其初始固定顺序包装在蒙太奇中。在这种情况下,必须在蒙太奇中开始的新图像行之后找到图像(简单)

2.)允许更改图像的顺序。在这种情况下,必须找到一种排列,当每个图像被压缩到蒙太奇(硬)中时,这种排列将导致最终行高度的标准偏差最小化

例如:


我不确定我是否正确理解了你的问题

这是我对它的看法。假设您有8个不同大小的不同图像。出于演示目的,我将让ImageMagick创建8种不同的色块:

convert -size  90x90  xc:yellow  y.png
convert -size 120x120 xc:red     r.png
convert -size  60x210 xc:green   g.png
convert -size 150x180 xc:blue    b.png
convert -size  30x60  xc:cyan    c.png
convert -size 150x90  xc:magenta m.png
convert -size  90x120 xc:gray    Gr.png
convert -size 120x90  xc:black   K.png
您可以通过多种不同的方式蒙太奇这些补丁:

convert \( y.png r.png g.png  b.png +append \)  \
        \( c.png m.png Gr.png K.png +append \)  \
       -append                                  \
       -mattecolor lightblue                    \
       -frame 1x1                               \
        montage0.png
此命令不会缩放不同的面片。它将它们放置在2行4个补丁中,并将它们拼接成原始尺寸。空白处是补片不“适合”的地方:

此命令将所有不同的面片缩放到60像素的公共高度(保留其各自的纵横比),并将它们放置在2行和4个面片中:

convert \( y.png r.png g.png  b.png -resize 60x +append \)  \
        \( c.png m.png Gr.png K.png -resize 60x +append \)  \
       -append                                              \
       -mattecolor lightblue                                \
       -frame 1x1                                           \
        montage2.png
convert \( y.png r.png g.png  b.png -resize 60x80\! +append \)  \
        \( c.png m.png Gr.png K.png -resize 60x80\! +append \)  \
       -append                                                  \
       -mattecolor lightblue                                    \
       -frame 1x1                                               \
        montage3.png

此命令将所有不同的面片缩放为60像素的公共宽度(保留其各自的纵横比),并将它们放置在2行和4个面片中:

convert \( y.png r.png g.png  b.png -resize 60x +append \)  \
        \( c.png m.png Gr.png K.png -resize 60x +append \)  \
       -append                                              \
       -mattecolor lightblue                                \
       -frame 1x1                                           \
        montage2.png
convert \( y.png r.png g.png  b.png -resize 60x80\! +append \)  \
        \( c.png m.png Gr.png K.png -resize 60x80\! +append \)  \
       -append                                                  \
       -mattecolor lightblue                                    \
       -frame 1x1                                               \
        montage3.png

此命令将所有不同的面片缩放为60x80像素的尺寸(覆盖其原始纵横比),并将其放置在2行和4个面片中:

convert \( y.png r.png g.png  b.png -resize 60x +append \)  \
        \( c.png m.png Gr.png K.png -resize 60x +append \)  \
       -append                                              \
       -mattecolor lightblue                                \
       -frame 1x1                                           \
        montage2.png
convert \( y.png r.png g.png  b.png -resize 60x80\! +append \)  \
        \( c.png m.png Gr.png K.png -resize 60x80\! +append \)  \
       -append                                                  \
       -mattecolor lightblue                                    \
       -frame 1x1                                               \
        montage3.png

如果这是一项“一生一次”的任务,我会推荐众多在线服务之一。它们提供了编辑图像的创造性方法。ImageMagick的蒙太奇命令不会排列具有不同大小/纵横比的图像。您是否认为可以像我们最喜爱的搜索引擎那样排列多个图像,并使用其图片搜索结果?或者你是否想到了更为详细的“修剪损失问题”(《修剪损失问题的基于规则的方法》,Int.J.Prod.Res.20,第401-415页,1991)?不管怎样-有趣的问题…我真的不明白你想要什么。如果您为所有这些设置了一个共同的高度或宽度,并且您还可以“裁剪”它们,那么“最佳安排”它们也没有任何问题。或者我不明白的是什么?