我必须以一定的宽高比从上到下增加任何给定图像的宽度。
在PHP GD / imagemagick / fabric js中是否有任何解决方案,还是有其他应用程序?
First image is the Source. And I need the output like the second image
答案 0 :(得分:1)
您可以像这样使用 ImageMagick 的+distort
运算符:
首先,创建起始形状:
convert -size 100x300 xc:green shape.gif
现在扭曲它以扩大基数:
convert shape.gif -virtual-pixel none \
+distort Perspective '0,0,0,0 99,0,99,0 0,299,-60,299 99,299,160,299' result.gif
有4对数字。第一对表示输入图像中的像素[0,0](左上角)必须出现在输出图像中的[0,0]处。第二个表示像素[99,0](右上角)必须出现在输出图像中的相同位置。第三个说左下像素在输出图像中必须是[-60,299] - 即在其当前位置左边60个像素并且在当前图像边界之外。同样,右下角像素必须出现在其当前位置右侧60像素处,因此在现有图像库之外。
none
的虚拟像素设置使新创建的像素透明。虚拟像素还有其他可能的设置,可以按如下方式列出:
identify -list virtual-pixel
<强>输出强>
Background
Black
CheckerTile
Dither
Edge
Gray
HorizontalTile
HorizontalTileEdge
Mirror
None
Random
Tile
Transparent
VerticalTile
VerticalTileEdge
White
如果您想让代码更加独立于图片的尺寸,可以使用fx
运算符和新的magick
命令代替convert
对它们进行参数化:
magick shape.gif -virtual-pixel none \
+distort Perspective '0,0,0,0 %[fx:w-1],0,%[fx:w-1],0 0,%[fx:h-1],-60,%[fx:h-1] %[fx:w-1],%[fx:h-1],%[fx:w+60],%[fx:h-1]' result.gif