使用ImageMagick(PHP)将2张图像并排放入1

Joh*_*ith 11 php imagemagick

我觉得这很简单.

我有2张图片/ JPG,我希望它们合并成一张图片,其中2张并排.

所以我有pic [A]和pic [B],我想得到pic [AB](并排).

两个图像具有相同的宽度和高度.在这种情况下,宽度= 200px,高度= 300px.但是当图像宽度小于200px(200px是maxwidth)时,第二个图像应出现在位置200,0 ..

这就是我尝试过的(php):

exec($IMAGEMAGICK_PATH."composite picA.jpg -geometry +200+0 picB.jpg picAB.jpg");
Run Code Online (Sandbox Code Playgroud)

我也尝试过"复合"之后的"-size 400x300",但没有任何反应.问题是图像picA.jpg被移动200px并合并到picB.jpg,但picAB.jpg的宽度与picB.jpg相同.

我也不确定"-geometry"是否是正确的命令.

Kur*_*fle 14

-geometry如果两个文件的大小相同,则无需使用.尝试

exec($IMAGEMAGICK_PATH."convert picA.jpg picB.jpg +append picAB.jpg");
Run Code Online (Sandbox Code Playgroud)

使用-append,如果你想在一列合并照片.

添加-background none-background black-background white或什么的,如果你的图片是相同的尺寸.在这种情况下,你可能还需要添加-gravity center-gravity south或一些这样来控制两个图像究竟是如何合并.在-gravity需要前,出现+-append在命令行,则:

exec($IMAGEMAGICK_PATH."convert big.jpg small.jpg -gravity east -append 2x.jpg");
Run Code Online (Sandbox Code Playgroud)


Kur*_*fle 3

由于扩展要求,以下是执行图像附加的命令行,其中右图应从左边缘偏移 200 像素,无论左图像的(较小)宽度如何:

 convert                          \
   -background '#FFF9E3'          \
    xc:none -resize 200x1\!       \
    right+narrow.png -append      \
    left+wider.png                \
   -gravity south                 \
   +append                        \
   -crop '400x +0+1'              \
   +repage                        \
    result.png
Run Code Online (Sandbox Code Playgroud)

该部件xc:none -resize 200x1\!创建一条 1 像素高、200 像素长的线,并垂直向其附加较小的(右)图像。

对于这个中间结果,会水平附加更宽的(左)图像。现在我们将得到一张 401x100 的图片,顶部有一条可能丑陋的透明像素线。

这就是为什么我们用该函数削掉顶部像素线-crop

您应该能够自己将其翻译成 PHP...:-)