获取本地加载的大图像的维度

时间:2010-02-12 15:07:10

标签: flex flash actionscript-3 actionscript

我正在尝试读取本地加载图像的宽度和高度。这似乎适用于不超过Flash Player 10(http://kb2.adobe.com/cps/496/cpsid_49662.html)限制的尺寸的图像,但是一旦图像更大,宽度和高度保持为0.奇怪的是,偶尔会出现这种情况。 ,我可以阅读这些更大图像的尺寸,但大多数时候没有。我知道这可能是因为玩家的限制,但我至少会期望错误是一致的。

我想检查一下,因为加载这么大的图像是没有用的,因为它无论如何都不会显示,但最好向用户提供详细的错误信息。

有关于此的任何想法吗?

这是我用来在本地加载图像并读取维度的代码:

private function chooseImageButton_clickHandler(event:Event):void {
  var allowedTypes:String = "*.jpg;*.png";
  m_uploadFileReference = new FileReference();
  m_uploadFileReference.addEventListener(Event.SELECT, uploadFileReference_selectHandler);
  m_uploadFileReference.addEventListener(Event.COMPLETE, uploadFileReference_completeHandler);
  m_uploadFileReference.browse([new FileFilter("Image Files (" + allowedTypes + ")", allowedTypes)]);
}

private function uploadFileReference_selectHandler(event:Event):void {
  m_uploadFileReference.load();
}

private function uploadFileReference_completeHandler(event:Event):void {
  var loader:Loader = new Loader();
  loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded);
  loader.loadBytes(m_uploadFileReference.data);
}

private function onImageLoaded(e:Event):void {
  trace(e.target.content.width);
}

2 个答案:

答案 0 :(得分:4)

您可以跳过加载整个图片,只需使用此class阅读标题。

var je : JPGSizeExtractor = new JPGSizeExtractor( );
je.addEventListener( JPGSizeExtractor.PARSE_COMPLETE, sizeHandler );
je.extractSize( your_jpg_file.jpg );
 
function sizeHandler( e : Event ) : void {
    trace( "Dimensions: " + je.width + " x " + je.height );
}

应该更快更可靠。

答案 1 :(得分:0)

  

我至少期望错误是一致的。

好吧,至少Adobe在这一点上非常明确:“......如果你选择超越这些界限,我们就不能保证一致的行为。”

您是否可以将图像上传到php预处理器? (Google {Here's一个)