如何在 PHP 中并排绘制翻转图像和原始图像?
Posted
技术标签:
【中文标题】如何在 PHP 中并排绘制翻转图像和原始图像?【英文标题】:How can I draw a flipped image and original image side by side in PHP? 【发布时间】:2018-05-26 02:06:34 【问题描述】:这是我目前正在使用的代码。
$image = imagecreatetruecolor(400, 300);
imagesavealpha($image, true);
imagesetthickness($image, 2);
$red = imagecolorallocate($image, 255, 0, 0);
$green = imagecolorallocate($image, 0, 255, 0);
$blue = imagecolorallocate($image, 0, 0, 255);
$transparent = imagecolorallocatealpha($image, 255, 255, 255, 0);
imagefill($image, 0, 0, $transparent);
imagerectangle($image, 2, 2, 398, 298, $red);
imagedashedline($image, 0, 150, 400, 150, $blue);
imagedashedline($image, 200, 0, 200, 300, $blue);
imagepolygon($image, array( 10, 180, 10, 250, 110, 250), 3, $red);
// imageflip($image, IMG_FLIP_VERTICAL);
ob_start();
imagepng($image);
printf('<img src="data:image/png;base64,%s"/>', base64_encode(ob_get_clean()));
imagedestroy($image);
附图是运行上述代码的结果。
我想翻转右下角的三角形并将其与原始图像一起绘制。我尝试使用imageflip()
,但它会覆盖原始图像。
我知道imageflip()
正在翻转矩形和虚线,但它们是对称的,所以没什么大不了的。
将填充颜色设置为透明不起作用。任何帮助将不胜感激。
我的目标是获取原始图像,将其沿水平线翻转,然后将生成的图像沿垂直线翻转。
一旦我知道如何在不丢失原始图像的情况下沿水平线翻转,我就可以尝试自己完成其余的工作。
【问题讨论】:
【参考方案1】:如果你愿意,你可以使用 javascript,如果你知道它来获取它的样式,然后添加一个新的,但这可能会很复杂。我可以引导你完成它,尽管这需要相当长的时间。如果你有 github 我可以帮忙
【讨论】:
实际上我在使用 JavaScript canvas API 或 php GD 之间存在冲突。你认为这样的事情在 JavaScript 中会更容易吗? 您肯定会希望在您的代码中使用 php,但 javascritp 并不是一个坏方法。是的,在我看来,使用 document.getElementById 肯定比其他任何东西都更容易。【参考方案2】:如果您想在翻转之前保留原始图像,则使用imagecopy()
复制图像,然后使用新的复制图像调用imageflip()
。
$flipImage = imagecreatetruecolor(400, 300);
imagecopy($flipImage, $image, 0, 0, 0, 0, 400, 300);
imageflip($flipImage, IMG_FLIP_HORIZONTAL);
【讨论】:
以上是关于如何在 PHP 中并排绘制翻转图像和原始图像?的主要内容,如果未能解决你的问题,请参考以下文章