Php 如何使用GD库扭曲图像?

Php 如何使用GD库扭曲图像?,php,gdlib,Php,Gdlib,我想把图像扭曲成梯形。左右边缘需要上下笔直;上边缘和左边缘需要有角度。我不知道最好的方法是什么 我正在使用GD库和PHP。谁能给我指出正确的方向吗 谢谢, 杰森我发现这个(翻译成荷兰语->英语)在讨论同样的事情。看来这可能就是你想要的。我认为很明显,如果不编写自己的函数,就不能使用GD进行倾斜。如果您有ImageMagick可用,您可能会发现这是 祝你好运。试试这个: <? // Set it up $img_name = "grid.jpg"; $src_img = imagecre

我想把图像扭曲成梯形。左右边缘需要上下笔直;上边缘和左边缘需要有角度。我不知道最好的方法是什么

我正在使用GD库和PHP。谁能给我指出正确的方向吗

谢谢, 杰森

我发现这个(翻译成荷兰语->英语)在讨论同样的事情。看来这可能就是你想要的。我认为很明显,如果不编写自己的函数,就不能使用GD进行倾斜。如果您有ImageMagick可用,您可能会发现这是

祝你好运。

试试这个:

<? 
// Set it up
$img_name = "grid.jpg"; 
$src_img = imagecreatefromjpeg($img_name); 
$magnify = 4;

// Magnify the size
$w = imagesx($src_img); 
$h = imagesy($src_img); 
$dst_img = imagecreatetruecolor($w * $magnify, $h * $magnify);
imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $w * $magnify, $h * $magnify, $w, $h);
$src_img = $dst_img;

// Skew it
$w *= $magnify;
$h *= $magnify;
$new_lh = abs($h * 0.66); 
$new_rh = $h ; 
$step = abs((($new_rh - $new_lh) / 2) / $w);
$from_top = ($new_rh - $new_lh) / 2 ; 
$dst_img = imagecreatetruecolor($w, $new_rh);
$bg_colour = imagecolorallocate($dst_img, 255, 255, 255); 
imagefill($dst_img, 0, 0, $bg_colour); 
for ($i = 0 ; $i < $w ; $i ++)
{
    imagecopyresampled($dst_img, $src_img, $i, $from_top - $step * $i, $i, 0, 1, $new_lh + $step * $i * 2, 1, $h); 
}

// Reduce the size to "anti-alias" it
$src_img = $dst_img;
$dst_img = imagecreatetruecolor($w / $magnify  * 0.85, $new_rh / $magnify);
imagecopyresampled ($dst_img, $src_img, 0, 0, 0, 0, $w / $magnify * 0.85, $h / $magnify, $w, $h);

header("Content-Type: image/jpg");  
imagejpeg($dst_img); 
?>


制作一个嵌套循环,x=0表示宽度,y=0表示高度,获取该坐标处的像素(rgba),计算新xy以进行倾斜旋转(使用正弦-余弦,必须使用倾斜原点进行角度计算),然后将像素复制到空图像。只是高中数学

是的,ImageMagick是我想到的,它可以做任何事情。谢谢你的解决方案。你对周围的另一边有什么建议吗?