Photoeffects网站基于PHP

Dan*_* FA 9 html javascript php web

我想知道像http://photofunia.com/和其他在线照片效果网站这样的网站是如何构建的.例如,使用php,我想合并两个图像frame.png与profile.jpg.我希望我的frame.png在我放置profile.jpg的中心透明.

我试过这个,但它不起作用:

<?php $dest = imagecreatefromjpeg('dest.jpg');
      $src = imagecreatefrompng('logo.png');
      $src = imagerotate($src, 90, imageColorAllocateAlpha($src, 0, 0, 0, 127));
      $almostblack = imagecolorallocate($src,254,254,254); 
      $src =  imagecolortransparent($src,$almostblack); 
      imagealphablending($dest, true);
      imagesavealpha($dest, 0);
      imagecopymerge($dest, $src, 900,600, 1, 1, 90,90, 90); 
Run Code Online (Sandbox Code Playgroud)

提前致谢.请帮我.

Nik*_*hak 13

回答你的问题:

  1. Adobe没有为此提供API.但是,您可以使用Adobe Creative SDK进行照片编辑.

  2. 通常使用很多Javascript库.你可以在codegeekz查看 顶级图像处理库

  3. 如果你坚持使用php,最好的办法是使用ImageMagick图像处理GD库.开发人员应该将这些结果称为"完美".有一些有趣的PHP图像编辑库,你可以查看其中许多维护到目前为止!

  4. 对于合并图像,您可以跳转到imagecopymerge的官方文档,也可以使用Imagick/GD Library.这篇SO帖子可能会给你一个开端.

您还可以使用Gmagick,它是ImageMagick的一个分支,并且在处理图像时更快(参见基准)(尽管代价较小的功能).原始项目可以在graphicsmagick找到.去严格被PHP的方式,就个人而言,我建议ImageMagick的给予它的速度,丰富的功能集,人气,支持文档和示例.

额外参考:


Ser*_*ata 3

您已经收到了更具技术性的答案,因此我将重点关注事物的创意方面。您还提到了对相关php库的熟悉程度,甚至之前尝试创建类似的作品,但最终似乎缺乏光泽。

在我看来,这种努力更依赖于艺术性、创造力,最重要的是,依赖于准备好的资源。通过手动准备这些图像,您将对最终结果有更多的技巧,并且只将简单的合成留给php. 不是整个编辑过程。

坦率地说,通过 API 无法获得如此详细的结果。该项目需要数小时的体力劳动和编辑。注意灯光、透明度和颜色。

最令人印象深刻的效果是照片中的物体与用户添加的图像重叠的效果。IE:

在此输入图像描述

虽然这个例子相当简单,但相同的逻辑适用于更复杂的组合。

  1. 您需要从高分辨率图像开始。特别是如果您要向用户提供实体印刷品。
  2. 高分辨率也是非常必要的,因为您必须事先在 Photoshop 等程序中编辑和准备这些内容。
  3. 为了获得最佳效果,这些需要在 Photoshop 中使用复杂的复合蒙版。考虑清晰且平滑的 Alpha 过渡。不要只用硬线切割所有东西。

考虑上面的示例时,您可以在 Photoshop 中只使用一层。只需在放置照片的地方切一个洞并将其导出为png.

对于其他示例,我建议单独的背景层和前景层,并将用户添加的图像夹在中间。

在此输入图像描述

这是分辨率至关重要的另一个很好的例子。叶子太小,无法以微小的分辨率有效地遮盖。有些叶子也可能模糊且失焦;再次强调,不要用硬线切割它们。为了获得最佳效果,请在 Photoshop 中对它们进行遮罩时使用软笔刷。

最后但并非最不重要的一点是,这是一个非常简单的实践示例。

在此输入图像描述

请注意背景图像具有光滑的蒙版,而叶子具有坚硬的蒙版。坦率地说,叶子的某些部分没有聚焦,可以进一步细化。您在这里投入的时间将使您的最终结果的可信度变得不同。

将每个图层保存为 apng并在 内合成php。我建议确保每个都png具有相同的尺寸。不要试图将较小的放置png在较大的上方。给它们相同的尺寸,使对齐变得轻而易举。