如何在 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 中并排绘制翻转图像和原始图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 GitHub README.md 中并排显示图像?

如何在 C# windows 窗体中绘制可缩放图像

我如何使 PHP/HTML 图像在点击时显示原始大小?

如何在单个图像周围添加边框,同时保持图像并排对齐?

如何并排对齐三个图像? [关闭]

如何在 div 中并排放置图像? (wordpress)