我想倾斜图像为梯形形状。 左,右边缘必须是直上直下; 顶部边缘和左边缘必须是有角的。 我不知道这样做的最好办法是。
我使用GD库和PHP。 任何人都可以点我在正确的方向?
谢谢,杰森
我想倾斜图像为梯形形状。 左,右边缘必须是直上直下; 顶部边缘和左边缘必须是有角的。 我不知道这样做的最好办法是。
我使用GD库和PHP。 任何人都可以点我在正确的方向?
谢谢,杰森
试试这个:
<?
// 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);
?>
我发现这个线程 (翻译荷兰语- >英语)谈论同样的事情。 看起来这可能是你追求的。 我认为这是明显的,你不能没有编写自己的函数来进行与GD歪斜。 如果您有ImageMagick的使用,你可能会觉得这是更容易实现 。
祝好运。