Flash上​​传图片大小调整客户端

Posted

技术标签:

【中文标题】Flash上​​传图片大小调整客户端【英文标题】:Flash upload image resize client side 【发布时间】:2010-09-30 16:12:00 【问题描述】:

有没有人知道如何使用 Flash 调整客户端图像大小。

示例: 客户选择一张 1200x800 的图片,在上传之前,flash 会将其变成一半或其他东西。

有什么想法吗?

【问题讨论】:

【参考方案1】:

Plupload 是开源的,具有良好的文档并支持多种平台,包括 Gears 和 html5!

http://www.plupload.com/index.phphttp://www.plupload.com/example_all_runtimes.php

啊,是的,它支持在上传之前调整图像大小。最接近 aurigma 的选项,但免费 :)

【讨论】:

听说虽然调整后的图像质量不好,那有什么用! 它是开源的,所以你可以随时改进它。即:使用 Emscripten 编译 imagemagick,您将获得大量选项来提高图像质量。【参考方案2】:

看看我写的脚本: image resizing at client side

【讨论】:

【参考方案3】:

http://www.shift8creative.com/projects/agile-uploader/index.html

我刚刚完成了这个小项目 - 免费使用。它不会真正允许最终用户选择尺寸,但您可以传递最大宽度和最大高度约束。也许您可以使用不同的选项制作多个页面/嵌入。

【讨论】:

这个项目不再活跃,虽然是开源的。但是,它会在上传时将所有图像转换为 JPG 文件。如果您想上传艺术线条类型的 PNG 文件,就会出现问题(因为质量会受到很大影响)。【参考方案4】:

Silverlight、ActiveX 和 Java 可以完全在客户端执行此操作。如果您必须使用 Flash,您将需要使用尚未流行的 Flash 10。这是来自 Flash Cafe 的uploading an image to Flash then resizing it on the client 示例。

Flash 8 或 9 中的其他选项将涉及服务器端调整大小的脚本,在大多数情况下都达不到目的。

【讨论】:

【参考方案5】:

您需要创建一个转换矩阵,然后使用它将原始位图绘制成新的位图。这是我刚刚输入但尚未测试的内容中的想法:

function resize(obm:BitmapData, scale:Number): BitmapData 
   var resizeMatrix:Matrix = new Matrix();
   resizeMatrix.scale(scale, scale);

   var rbm:BitmapData = new BitmapData(obm.width * scale, obm.height * scale);
   rbm.draw(obm, resizeMatrix);

   return rbm;

但是,我对结果的质量不做任何声明。我想我记得过去尝试过这个,不喜欢结果,然后下注......

【讨论】:

【参考方案6】:

我正在使用来自http://www.resize-before-upload.com 的 Flash 上传器,工作正常 :)

【讨论】:

此功能不再受支持且不允许上传 BMP 文件。【参考方案7】:

SwfUpload 的最新版本会在客户端调整图像大小(使用 Flash)。一个非常有用的工具,虽然显示上传进度之类的附加功能可能有点繁琐。

http://code.google.com/p/swfupload/

【讨论】:

看起来这个项目可能已经死了。它自 2010 年 3 月以来一直没有更新,v2.5 是一个“beta 3”并且有许多未解决的问题 - 请参阅 code.google.com/p/swfupload/issues/list。

以上是关于Flash上​​传图片大小调整客户端的主要内容,如果未能解决你的问题,请参考以下文章

QT中怎么调整显示图片大小

C#,button按钮上的图片太大,如何调整图片大小?

IOS开发中如何调整WKWebView中的图片大小

word中怎样一次性调整所有图片大小?

js如何读取客户端文件大小(不只是图片)

如何批量调整Word中图片大小