在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的分辨率,但可以以不同的分辨率打印它们。我认为你实际上是在寻找尺寸(宽度/高度)。