实现客户端图像编辑器 - 最好的方法是什么?

时间:2010-08-13 03:35:50

标签: javascript flash gwt image-processing client-side

我们想要一个允许用户在浏览器上编辑图像的网络应用程序,我们正在尝试决定使用哪种技术。我们希望支持简单的图像自定义,例如高质量的大小调整,裁剪,图像合并和颜色转换,以及添加具有不同字体和颜色的文本元素。

目前的选项是:

  1. Flash:不用担心跨浏览器的兼容性;可以在客户端和服务器上使用相同的图像库;没有iPhone / iPad支持。
  2. Java(使用GWT编译为javascript):需要在纯Java中找到一个好的图像库,以便可以编译为JS。
  3. 普通的旧javascript + HTML5:由于多个浏览器可能会混乱;可能需要从头开始编写图像编辑代码。
  4. 以下是对我们最重要的/选择标准:

    • 图像一致性:客户端在浏览器上编辑的图像必须与我们最终在后端使用的图像完全相同。我们可以通过(a)在客户端和服务器上使用相同的库来处理图像,(b)让客户端生成图像并将其上传到服务器,或(c)使用两个不同的图像处理库来实现这一点。客户/服务器,并希望在一致性方面做到最好。选项(a)看起来最好,但只有使用Flash或Java / GWT才有可能。我们不喜欢选项(b)因为图像很大;我们宁愿保存一系列操作来对原始图像执行,而不是保存多个转换后的图像。我们并不确定选项(c)是否安全。
    • 可伸缩性:我们希望客户端尽可能多地工作以减少服务器负载。
    • 图像质量必须保持高水平
    • 跨平台:我们希望尽可能多地支持平台而不重写所有内容(由于iPhone / iPad而对Flash造成很大的负面影响)。

    您推荐什么样的路径?我们有什么替代方案吗?

    感谢您的帮助!

4 个答案:

答案 0 :(得分:5)

绝对是Flash。如果你使用JavaScript和HTML5,你基本上会对所有IE用户说“搞砸”。 Flash的渲染引擎对于这些东西比浏览器更快,并且速度在所有浏览器中都是一致的。此外,Flash内置了非常强大的图像处理库,而在JavaScript中你必须自己编写它们。

编辑:因为我刚收到一份3年前答案的下注,我有义务说这不再是真的,你应该使用像{{1这样的网络标准因为它们现在几乎无处不在。不要使用Flash。

答案 1 :(得分:2)

我们选择了3,因为Java applet已经死了,我们不喜欢Flash。 HTML5,希望是未来 GWT听起来像一个有趣的选项,但我们无法使用它,因为服务器端是.NET。 编写图像编辑代码很有趣:)

答案 2 :(得分:1)

我会选择JS + HTML5 \ canvas。 如果您刚刚开始编写该应用程序并且不依赖于技术,那么它是最佳选择。与Flash或Java插件相比,浏览器的速度越来越快(40-60%的台式机获得了它?)。持有革命的唯一令人毛骨悚然的怪物是IE,但我认为IE9将带我们进入新时代,我们可以使用新标准在网上制作非常酷的跨浏览器应用程序:) 所以你现在可以开始了,2-3个月之后IE9将提供画布支持和所有那些花哨的东西。所有其他浏览器现在都已准备就绪,但它们将不断发展并提高JS引擎速度。我希望:))

答案 3 :(得分:1)

这篇文章是在4年前创建的,现在的情况非常不同,因此我想用更新的信息来补充答案。

  • Flash 不再是一个好选择,因为有些浏览器会阻止它,而其他浏览器则鼓励不使用它有很多原因。 Flash 不适合移动设备。
  • Java Applet 比Flash有更多限制。目前它仅在我们没有其他选择时使用。
  • Silverlight 提出了类似的Flash问题。
  • Javascript 生态系统一直在不断发展,现在我们有许多框架可以在客户端,服务器端和移动设备上使用它。 Javascript的采用和支持现在更加成熟。因此,现在我认为Javascript是目前为止的最佳选择。

对于寻找客户端图像处理的开发人员,我建议使用以下基本示例:
Processing an Image Before Uploading to a Server

您可以使用相同的框架来开发移动应用:
Getting Started with Image Processing in Mobile Devices Using Javascript, Ionic and MarvinJ

在javascript框架的参考下面操作图像:

注意:我邀请所有人编辑此asnswer并补充上面的列表。