我有一张X和Y尺寸的图片。
我想使用imagick将图像扩展到x和y+10。
这里有一个实现这一点的例子:
http://phpimagick.com/Tutorial/edgeExtend
代码示例演示如何水平扩展,而不是垂直扩展。
当我使用该示例进行水平扩展时,它起作用:
function EdgeExtendHorizontal(&$img)
{
$originalWidth=$img->getImageWidth();
$desiredWidth=$originalWidth+120;
$Factor=$originalWidth/$desiredWidth;
$Offset=($desiredWidth-$originalWidth)/2;
$img->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_MIRROR);
$img->sampleimage($desiredWidth,$img->getImageHeight());
$points=array($Factor,0,0,1,$Offset,0);
$img->distortImage(Imagick::DISTORTION_AFFINEPROJECTION,$points,false);
}
但是,当我尝试切换参数以使图像垂直扩展时,它不起作用:
function EdgeExtendVertical(&$img)
{
global $LanguageName;
$originalHeight=$img->getImageHeight();
$desiredHeight=$originalHeight+100;
$Factor=$originalHeight/$desiredHeight;
$Offset=($desiredHeight-$originalHeight)/2;
$img->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_MIRROR);
$img->sampleimage($img->getImageWidth(),$desiredHeight);
$points=array(0,$Factor,0,1,0,$Offset);
$img->distortImage(Imagick::DISTORTION_AFFINEPROJECTION,$points,false);
}
按如下方式修改点数组会产生以下结果:
$points=array($Factor,0,0,1,0,$Offset);
但现在这幅图像在垂直和水平方向上都被莫名其妙地扩展了
如果有人能对点阵列的结构做些解释,使图像只在垂直方向上延伸,那将非常感谢。
谢谢!
西姆罗