据我所知,我在这里提出的要求是不可能的,但我想我无论如何都会问,以防我错过了什么。
假设您希望让用户上传JPG图像,并将这些图像缩放为较小的图标,并始终丢弃原始图像,而不再需要。有没有什么方法可以在大多数现代浏览器中使用,让用户在硬盘上选择单个图像,将LOCALLY变成缩略图并将创建的缩略图上传到服务器?
在服务器只需要一个小图像的情况下,在用户时间和服务器资源上继续上传整个图像将是浪费,只是立即丢弃它。在客户端上扩展它会好得多。
我可以想象三种选择。只是简单的HTML / Javascript,使用Flash或使用Java。如果这可以用Flash,这似乎是最好的选择。但是阅读flash.net.FileReference文档,似乎你可以从HD上传一个文件,但你无法查看你正在上传的文件。另一方面,如果您在Flash发布选项中启用“可以访问本地文件”,则您似乎无法再访问网络,因此无效。
使用HTML / Javascript,可以加载图像并将其显示在<canvas>
上,但如果您尝试访问这些图像的像素,则会出现安全违规,因此似乎无法正常工作
Java我不愿意使用,因为只有96.52%的用户安装了它,而我用Java(例如Facebook)实现的文件上传对话框效果不佳(界面反应迟钝)。我想知道Java是否是唯一允许从本地HD调整图像大小的东西?
答案 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来调整服务器中的图像大小并保存新图像(拇指)并丢弃原始图像。