【问题标题】:what is the fastest way to concatenate two images in php?在php中连接两个图像的最快方法是什么?
【发布时间】:2011-04-26 17:28:06
【问题描述】:

我需要在 php 中连接图像(两个或更多),垂直和水平。最快的方法是什么?

obs:我不想使用非本地库

另一个疑问。生成的图像会是图像大小的总和还是会更大?

谢谢(:

【问题讨论】:

    标签: php image image-processing gd2


    【解决方案1】:
    $newWidth = $w1 + $w2;
    $newHeight = $h1 + $h2;
    $newImage = imagecreatetruecolor($newWidth, $newHeight);
    
    imagecopyresampled($newImage, $image1, 0, 0, 0, 0, $w1, $h1, $w1, $h1);
    imagecopyresampled($newImage, $image2, $w1, 0, 0, 0, $w2, $h2, $w2, $h2);
    

    现在我只是在堆栈溢出编辑器中编写了这个代码并且它未经测试,但这应该使用所有本机库并且可能是最快的。只需将 image1 复制并重新采样到前半部分(宽度方向),然后将第二个图像复制到下半部分(宽度方向),如果你想通过堆叠高度来做到这一点,它只会改变 dest_h 的位置。这是一些信息...http://php.net/manual/en/function.imagecopyresampled.php

    哦,顺便说一句,那是为了保存图像。这就是我假设你在做什么。否则,使用标签将 2 张图像彼此相邻堆叠的答案将是最快的。

    就生成的图像而言,请记住。如果它们水平放置,则宽度将为$w1 + $w2,高度为math.max($h1, $h2),如果图像垂直堆叠,则相反

    【讨论】:

    • 一般来说,这适用于纯色图像。对于透明的,你应该提供更多的代码。
    • 这真的很有帮助!如果 $image1 是 jpg 而 $image2 是 png (例如),这不是问题吗?
    • @hugo,这取决于您在原始源(图像)中的透明度或原始图像的类型(gif、png8、png32 等)。比你应该关心的阿尔法颜色。此示例描述 how to get transparent rounded corners on image,并返回 PNG 32 位图像。此外,这取决于您期望的透明图像输出(gif 或 png,如果 png 是哪种 png 8、24、32)。
    猜你喜欢
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 2023-03-25
    • 2018-08-20
    • 2014-01-20
    相关资源
    最近更新 更多