apacheflex-在客户端检查上传的图像分辨率和详细信息



在flex中,我们通常从flex端上传图像并上传到服务器,我想知道,我们能做一些细节检查吗,比如我想在上传到服务器之前找出图像的分辨率(在客户端)

有两个好处,第一,客户端不需要等待很长时间就可以上传图像,如果在服务器端找到图像分辨率,则需要时间,即使要上传的图像也不是预期的分辨率

第二,用户交互&与flex应用程序的接口将得到改善,

因此,请从弹性端

对这种检查给出一些想法

如果你指的是加载到flex应用程序中的位图的宽度/高度测量,width/height存储在BitmapData结构中http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/BitmapData.html

对于Image flex控件,它可以通过以下结构访问:

// image_control is an instance of mx.controls.Image
var width:Number = 0;
var height:Number = 0;
if (image_control.content is Bitmap)
{
   height= (image_control.content as Bitmap).bitmapData.width;
   height= (image_control.content as Bitmap).bitmapData.height;
}

我想你说的是桌面应用程序。否则,您将无法访问任何本地文件(您只能初始化加载到服务器的文件)。

要使用jpg和png,可以使用as3corelib的com.adobe.images包。Trere能够获得图像的高度/宽度或分辨率。

尽管我认为在服务器端上对图像执行操作更好

对于flex,您可以使用FileReference.browse函数从硬盘加载文件。如果你想检查图像的宽度和高度,你可以参考德米特里·萨佩尔尼科夫的答案。如果你想检查图像的总字节数,你可以尝试:

var bitmapByteSize:int = bitmap.bitmapData.getPixels(bitmap.bitmapData.rect).length;

仅仅检查图像的分辨率可能是不够的。如果您需要修改图像,可以查看以下内容:http://marstonstudio.com/2007/10/19/how-to-take-a-snapshot-of-a-flash-movie-and-automatically-upload-the-jpg-to-a-server-in-three-easy-steps/

它可能会给你一些提示。

您的Flex应用程序是桌面应用程序吗?如果是这样,您可以先从用户的硬盘加载文件,例如:http://mariusht.com/blog/2009/04/01/loading-local-images-directly-into-flash-player-10/

然后在将其发送到服务器之前获取宽度和高度(可能还有一种获取大小的方法)。

顺便说一句,要在网上显示的任何图像的分辨率总是72 DPI。例如,您不能更改jpeg或png的分辨率,但可以以不同的分辨率打印它们。我认为你实际上是在寻找尺寸(宽度/高度)。

最新更新