通过将其他人拼接在一起来制作更大的图像

时间:2009-07-29 18:14:40

标签: image-processing image-manipulation social-networking

我想创建一个应用程序,让你的朋友个人资料图片说你的Facebook,myspace或Twitter帐户,并制作出所有这些图像。我已经知道如何使用这些社交网络的API来获取图像网址,问题是,如何将它们“拼接”在一起。

如果您知道如何使用Zend或PEAR中的特定类来实现这一点,那将是非常好的,因为这就是我正在使用的。

感谢。

3 个答案:

答案 0 :(得分:1)

我会看一下将Imagemagick集成到您的解决方案中

http://us3.php.net/imagick

我不使用它,但通过查看示例,它开始像:

<?php
/* Create the big image. */
$im = new Imagick();
$im->newPseudoImage(500, 500, "white");

/* Create the small image. */
$faceImg = new Imagick('face.jpg');


?>

我没有看到如何将$ faceImg叠加到$ im上,但imagemagick具有该功能。如果PHP绑定不够好,您可以始终使用ImageMagick的命令行版本。

答案 1 :(得分:0)

非常基本方法是拍摄目标图像(您希望合成图像看起来像的图像)并将其剪切为较小的图像,然后将其剪切为可以称为T的图像集。 / p>

  1. 在T中找到每个图像的“平均颜色”。

  2. 拍摄你的朋友照片集,让我们调用那套F,然后找到每张照片的“平均颜色”。

  3. 现在将T中的每个图像与F中的图像进行匹配,以使颜色之间的距离尽可能小。在这里,您必须考虑是否允许F中的同一图像用于T中的多个图像。

  4. 稍微不那么基本的方法(使用与上面相同的设置):

    1. 平均过滤T和F中的每个图像(如模糊它们)

    2. 使用最小平方误差计算将T中的每个图像与F中的图像进行匹配。

    3. 我能想到的其他更先进的方法,但更重要的是数学:

      • 使用主成分分析从F和T中挑选主成分并匹配它们。
      • 使用任何类型的描述符(SIFT,SURF,...)在目标图像中查找F中的图像。这将允许您有一个不平坦的网格,或者根本没有网格,其中F中的两个图像最终可能会在生成的图像中具有大不相同的大小。

      至于框架,我认为它根本不重要。你需要的是一个好的图像库,使操作图像更容易。

答案 2 :(得分:0)

我认为图像魔法中有一个命令来拼接图像

convert 1.jpg 2.jpg -rotate 90 -append 270 final.jpg

我认为这就是你要找的东西