在flex中,我们通常会从flex端上传图像并将其上传到服务器, 我想知道,我们可以做一些细节检查,比如我想在上传到服务器之前找出图像分辨率(在客户端),
将有两个利润,首先客户端不需要等待很长时间才能上传图像,如果在服务器端找到图像分辨率,那么它会占用时间,甚至图像也是如此被上传的不是预期的决议
第二,用户互动&与flex应用程序的界面将得到改进,
所以,请从flex端给出一些关于这种检查的想法
答案 0 :(得分:1)
我想你是在谈论桌面应用。否则你将无法触及任何本地文件(你只能初始化它的uppload到服务器)。
要使用jpg和png,您可以使用as3corelib的com.adobe.images包。 Trere能够获得图像的高度/宽度或分辨率。
虽然我相信最好用服务器端的图像进行操作
答案 1 :(得分:1)
如果您指的是加载到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;
}
答案 2 :(得分:1)
对于flex,您可以使用FileReference.browse函数从硬盘加载文件。如果你想检查图像的宽度和高度,你可以参考Dmitry Sapelnikov的答案。如果要检查图像的总字节数,可以尝试:
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/
它可能会给你一些提示。
答案 3 :(得分:0)
您的Flex应用是否是桌面应用?如果是这样,您可以先从用户的硬盘驱动器加载文件,例如:http://mariusht.com/blog/2009/04/01/loading-local-images-directly-into-flash-player-10/
然后在将其发送到服务器之前获取宽度和高度(可能是获取大小的方法)。
顺便说一句,要在网络上显示的任何图像的分辨率始终为72 DPI。例如,您无法更改jpeg或png的分辨率,但可以以不同的分辨率打印它们。我认为你实际上在寻找尺寸(宽度/高度)。