Facebook如何编码他们的裁剪工具?

时间:2010-04-06 16:25:17

标签: jquery ruby-on-rails crop

我问这个是因为我正在尝试制定自己的技术,当你开始这个时,整个网站都有巨大的战略挂断。其中包括:

  1. 使用jCrop和rMagick,它需要进行大量处理(我已经背景化了)。

  2. 因为我有背景,所以我必须通过ajax开发一个每5秒自动更新一次的功能,以检查背景何时完成。

  3. 有没有人用他们的网站完成了这个?如果是这样,您遇到了哪些创新技术来保持处理流程,用户满意?

1 个答案:

答案 0 :(得分:3)

我不知道facebook是如何做到的,但我会使用jquery-ui的resizeable()draggable()方法。您可以将图像设置为div的精确宽度,并在图像顶部放置第二个可拖动/可调整大小的div(使用更高的z-index)。这样,您就拥有了一个半透明的裁剪区域,用户可以四处移动并进行调整。您可以将两种方法都设置为约束父div,这样它们就无法在图像之外拖动或调整大小。

当它们准备好裁剪时,每个角落的坐标可以通过ajax发送到服务器。然后服务器可以运行你拥有的任何图像裁剪器(在php中我将使用gmagic -> cropimage())并完成任务。

棘手的部分是决定如何向用户展示成品。我肯定会考虑将新的裁剪图像存储在tmp文件夹中,以防他们改变主意。但是如果你这样做,你可以让ajax更新图像元素的src,这样他们就可以看到他们做了什么。如果他们喜欢它,他们点击“保存更改”,这将通过ajax发送另一个请求,将原始文件替换为tmp文件夹中的原始文件。

Antoher,有点邋,的选择就是使用pxlr。他们有一个developer API,可以通过javascript调用他们网站的工具。您可以自定义用户看到的功能,并将其保存到“reffer”,即返回到您的服务器。不知道如何为此设置安全性,但我确信网站会进入安全状态。