那么如何使用imagemagick将之前的图像更改为之后的图像? 是-skew命令还是-distort,我最好如何在typo3和php中使用它?
感谢任何帮助!
答案 0 :(得分:7)
在php和命令行中使用Imagemagick:
// Working on the original image size of 400 x 300
$cmd = "before.jpg -matte -virtual-pixel transparent".
" +distort Perspective \"0,0 0,0 400,0 400,22 400,300 400,320 0,300 0,300 \" ";
exec("convert $cmd perspective.png");
注意: 1 /这适用于Imagemagick的更高版本 - 透视操作符已更改。 2 /你需要使用+ distort not -distort,因为图像大于初始图像boundrys。
我的网站http://www.rubblewebs.co.uk/imagemagick/operator.php上使用php的Imagemagick示例
答案 1 :(得分:4)
Perspective distortion 可以为您提供所需内容。例如:
convert original.png -matte -virtual-pixel white +distort Perspective '0,0,0,0 0,100,0,100 100,100,90,110 100,0,90,5' distorted.png
在TYPO3中,您可以使用 GIFBUILDER 的SCALE
对象通过(ab)应用它。例如:
temp.example = IMAGE
temp.example {
file = GIFBUILDER
file {
format = jpg
quality = 100
maxWidth = 9999
maxHeight = 9999
XY = [10.w],[10.h]
10 = IMAGE
10.file = fileadmin/original.png
20 = SCALE
20 {
params = -matte -virtual-pixel white +distort Perspective '0,0,0,0 0,100,0,100 100,100,90,110 100,0,90,5'
}
}
}
答案 2 :(得分:2)
我认为您正在寻找的是Imagick::shearImage
功能。这会创建一个棋盘方块并将其扭曲成平行四边形(将其另存为PHP文件并在浏览器中打开以查看):
<?php
$im = new Imagick();
$im->newPseudoImage(300, 300, "pattern:checkerboard");
$im->setImageFormat('png');
$im->shearImage("transparent", 0, 10);
header("Content-Type: image/png");
echo $im;
?>
在较大的脚本中,要剪切名为 myimg.png 的图像并将其另存为 myimg-sheared.png ,您可以使用:
$im = new Imagick("myimg.png");
$im->shearImage("transparent", 0, 10);
$im->writeImage("myimg_sheared.png");
如果shearImage
不够通用,您可以通过Imagick::distortImage
功能尝试Imagick::DISTORTION_PERSPECTIVE
方法。