【问题标题】:Upload image thumbnail to server, without uploading whole image将图像缩略图上传到服务器,而不上传整个图像
【发布时间】:2009-08-27 22:41:43
【问题描述】:

据我所知,我在这里问的问题是不可能的,但我想我还是会问一下,以防我遗漏了什么。

假设您想让用户上传 JPG 图片,并且这些图片被缩放成更小的图标,并且原始图片总是被丢弃并且不再需要。有什么方法可以在大多数现代浏览器中普遍使用,让用户选择硬盘上的单个图像,将其本地化为缩略图并将创建的缩略图上传到服务器?

在服务器只需要一张小图片的情况下,继续上传整个图片,然后立即丢弃,会浪费用户时间和服务器资源。在客户端上扩展它会好得多。

我可以想象三种选择。只是普通的 HTML/Javascript,使用 Flash 或使用 Java。如果 Flash 可以做到这一点,那似乎是最好的选择。但是阅读 flash.net.FileReference 文档,您似乎可以从 HD 上传文件,是的,但您无法查看正在上传的文件内部。另一方面,如果您在Flash发布选项中启用“可以访问本地文件”,则您似乎无法再访问网络,因此不起作用。

使用 HTML/Javascript,可以加载图像并将其显示在 <canvas> 上,但是如果您尝试访问这些图像的像素,则会违反安全规定,因此这似乎不起作用。

Java 我犹豫要不要使用,因为只有 96.52% 的用户安装了它,而且我看到的用 Java 实现的文件上传对话框(例如在 Facebook)效果不佳(界面无响应)。我想知道 Java 是否是唯一允许从本地高清调整图像大小的东西?

【问题讨论】:

    标签: java javascript flash actionscript canvas


    【解决方案1】:

    “如果 Flash 可以做到这一点,那 似乎是最好的选择。”

    据我了解,Flash Player 10 可以。

    这是一个例子:

    http://blog.kukiel.net/2009/02/file-manipulation-client-side-with.html

    Flash Player 10 目前的一般市场渗透率约为 85-90%,因此如果您因为只有 96.52% 的用户安装了 Java 而犹豫不决,我想您也不需要 Flash Player 10 .

    【讨论】:

    • 好链接。从 FlashPlayer 10 开始,可以在客户端操作,或者更准确地说,解释数据。
    【解决方案2】:

    我认为,如果有一种相当可靠且用户友好的方式来实现这一点,那么它已经在 Facebook 等网站上完成了。人们习惯于上传原始图像……能够改进已建立的用户体验总是很不错的,但如果你只能匹配它,你并没有完全失败。

    JavaScript 不存在了,因为 JS 无法直接从客户端读取任何内容;它只能引导浏览器加载预定义的本地路径,或者从服务器加载字节。

    正如您所指出的,Flash 的安全沙盒也可以防止这种情况发生。

    Java 有一系列不同的问题 - 现在人们很少安装小程序,除非他们比自己的家人更信任该网站。显然,要构建可靠可用的东西也是极其困难的,正如 Facebook 式的公司所证明的那样,这些公司拥有几乎无限的资源来解决问题但仍然失败。

    所以,总而言之 - 不,不要太担心。

    【讨论】:

      【解决方案3】:

      如果jpeg图像是渐进的,你可以在获得一定的分辨率后停止上传。这将需要您自己处理一些 jpeg 加载器和 http 处理代码。

      这也是一个相当大的“IF”,因为大多数 jpeg 默认不是渐进式的。

      【讨论】:

        【解决方案4】:

        另一种方法是使用 Google 的 Gears,例如:Gears Uploader

        【讨论】:

          【解决方案5】:

          我认为你可以将图像上传到服务器,然后在浏览器中显示,然后用户将使用 javascript 调整它的大小,但不是真正的调整大小,只捕获它的坐标,然后你可以使用 coordeante在服务器中调整图像大小并保存新图像(拇指)并丢弃原始图像。

          【讨论】:

            猜你喜欢
            • 2014-02-13
            • 2022-09-26
            • 1970-01-01
            • 1970-01-01
            • 2017-06-22
            • 2013-12-17
            • 2014-03-21
            • 2017-05-31
            • 2013-11-02
            相关资源
            最近更新 更多