imagemagick扭曲或扭曲图像

时间:2012-03-13 15:13:16

标签: php imagemagick typo3

那么如何使用imagemagick将之前的图像更改为之后的图像? 是-skew命令还是-distort,我最好如何在typo3和php中使用它?

感谢任何帮助!

before and after

3 个答案:

答案 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方法。