将图像缩略图上传到服务器,无需上传整个图像

时间:2009-08-27 22:41:44

标签: java javascript flash actionscript canvas

据我所知,我在这里提出的要求是不可能的,但我想我无论如何都会问,以防我错过了什么。

假设您希望让用户上传JPG图像,并将这些图像缩放为较小的图标,并始终丢弃原始图像,而不再需要。有没有什么方法可以在大多数现代浏览器中使用,让用户在硬盘上选择单个图像,将LOCALLY变成缩略图并将创建的缩略图上传到服务器?

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

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

使用HTML / Javascript,可以加载图像并将其显示在<canvas>上,但如果您尝试访问这些图像的像素,则会出现安全违规,因此似乎无法正常工作

Java我不愿意使用,因为只有96.52%的用户安装了它,而我用Java(例如Facebook)实现的文件上传对话框效果不佳(界面反应迟钝)。我想知道Java是否是唯一允许从本地HD调整图像大小的东西?

5 个答案:

答案 0 :(得分:4)

  

“如果可以使用Flash,那就是   似乎是最好的选择。“

据我了解,可以使用Flash Player 10。

以下是一个例子:

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

Flash Player 10目前的市场普及率约为85-90%,因此如果您因为只有96.52%的用户安装了Java而犹豫使用Java,我想您不会要求Flash Player 10 。

答案 1 :(得分:2)

我认为如果有一个相当可靠和用户友好的方式来实现这一目标,那么它已经在像Facebook这样的网站上完成了。人们习惯于必须上传原始图像...能够改进已有的用户体验总是很好,但如果你只能匹配它,那么你并没有完全失败。

JavaScript已经出局,因为JS无法直接从客户端读取任何内容;它只能指示浏览器加载预定义的本地路径,或从服务器加载字节。

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

Java存在一系列不同的问题 - 人们现在很少安装applet,除非他们比自己的家庭成员更信任该网站。显然,构建可靠的可用起来非常困难,正如Facebook风格的公司所证明的那样,这些公司几乎拥有无限的资源来解决问题并且仍然失败。

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

答案 2 :(得分:0)

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

它也是一个非常大的“IF”,因为默认情况下大多数jpegs都不是渐进式的。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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