【问题标题】:Joining two images in php在php中加入两个图像
【发布时间】:2010-11-16 14:55:13
【问题描述】:

如何加入头部图像和身体图像,以便头部图像精确地固定在身体图像中的颈部。

文件位于:

我尝试了http://yajurinfotech.com/projects/stickers/preview.php

我目前得到的是:

$h = 'head1.gif';
$b = 'body2.gif';

$headResource = imagecreatefromgif($h);
$bodyResource = imagecreatefromgif($b);

list($headWidth, $headHeight) = getimagesize($h);
list($bodyWidth, $bodyHeight) = getimagesize($b);

$previewHeight = $headHeight+$bodyHeight;
$previewWidth  = $headWidth;

$previewResource = imagecreatetruecolor($previewWidth, $previewHeight);

//make background white
$white = imagecolorallocate($previewResource, 255, 255, 255);
imagefill($previewResource, 0, 0, $white);

// Copy head image

imagecopyresized($previewResource,$headResource, ($headHeight/4)+3,($headHeight/2)-3,0,0,$previewWidth/4,$previewHeight/4,$headWidth,$headHeight);

//copy body image
imagecopy($previewResource,$bodyResource,0,$headHeight,0,0,$bodyWidth,$bodyHeight);

header('Content-type: image/gif');
imagegif($previewResource);

正如您在preview.php 中看到的那样,头部图像未正确放置在身体图像之上。

谁能帮我找到一个适用于body2.gifbody1.gif 的算法?

【问题讨论】:

  • @Sreejith,欢迎来到 stackoverflow!我想我们需要更多信息来回答你的问题——颈部在什么位置结束?头应该是多大?你关心头部“覆盖”一些身体信息吗?
  • 首先感谢stackoverflow。谢谢大家的支持。这真的激励了我.. @Dominic,我正在尝试实现类似于此页面中所做的功能:familystickers.com/family-stickers/default.asp 只需向下滚动到页面中的“创建您自己的家庭贴纸”,您就会看到这里实现的东西.我想要相同的功能..

标签: php image-processing image-manipulation


【解决方案1】:

你可以使用另一种方式来做到这一点,使用图像叠加,所以你需要有一个canevas(基本图像),你可以在它上面添加另一张图片..

示例:

$background = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT']. base_path()."/files/polaroid.jpg");
$insert     = imagecreatefromjpeg($path. 'photos/'.$imgName);
imagecolortransparent($insert, imagecolorat($insert, 0, 0));
$insert_x = imagesx($insert);
$insert_y = imagesy($insert);
imagecopymerge($background, $insert, 39, 32, 0, 0, $insert_x, $insert_y, 100);

希望对你有帮助:)

【讨论】:

    【解决方案2】:

    正如您在 preview.php 中看到的,头部图像没有正确放置在身体图像上。

    谁能帮我找到一个适用于 body2.gif 和 body1.gif 的算法?

    它是否只适用于您提供的两张图片,还是您正在寻找一种适合头部和颈部的通用算法?

    如果您想执行前者,只需找到正确的参数即可,您可以自行完成。 (反复试验)。

    如果你追求后者,恐怕你不能这样做,因为它是一些非常先进的东西。它需要模式识别(在身体图像中找到脖子)和其他一些 AI 东西来获得正确的头身比例。

    也许你可以告诉我们更多关于你想用这个实现什么?

    【讨论】:

    • 场景是这样的。用户可以选择身体图像(至少有 30 张图像),然后他/她选择身体图像(从 60 多张图像中)。此时,我们必须向他们展示我上面提到的预览。所以我想有一个通用的算法。感谢 André Hoffmann 抽出宝贵时间。
    • 我正在尝试实现类似于此页面中所做的功能:familystickers.com/family-stickers/default.asp/... 只需向下滚动到“创建您自己的家庭贴纸”页面,你会看到这里实现的东西。我想要相同的功能..
    • 创建一个数据库表,其中包含您所有的身体图像,并为每个身体存储头部所需的位置。如果还有其他配件,例如武器和其他物品,您也可以将其存放在此表中的位置。这可能有点痛苦,但恐怕这是你最好的选择。
    【解决方案3】:

    有一个不错的 PHP 类可供您使用,它执行各种图像处理,我相信这会对您有所帮助。

    http://www.verot.net/php_class_upload_samples.htm

    【讨论】:

    • 谢谢罗兰,这是一堂很棒的课。我肯定会使用它,但它不适合我提到的问题。
    【解决方案4】:

    这不是 php 的工作。

    显而易见的解决方案是设计图像,使所有颈部都在同一位置,例如在中心。

    否则,您将需要一个数据库或每个图像的颈部位置列表。然后你只需要改变头部或身体图像的相对位置。

    可以使用 css 或使用可变大小的透明或背景色像素来移动图像。 (即生成一个1x1像素大的透明png图片,然后用html调整大小。)

    【讨论】:

      猜你喜欢
      • 2019-10-09
      • 1970-01-01
      • 2015-05-27
      • 2012-10-10
      • 2012-02-10
      • 1970-01-01
      • 2013-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多