2


1

ローカルに読み込まれた大きな画像の寸法を取得

ローカルに読み込まれた画像の幅と高さを読み取ろうとしています。 これは、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 Answer


4


このhttp://www.anttikupila.com/flash/getting-jpg-dimensions-with-as3-without-loading-the-entire-file/[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 );
}

より速く、より信頼できるものでなければなりません。


0


_ 私は少なくともエラーが一貫していることを期待しています。 _

少なくともアドビはその点については明確です:_ "…​これらの境界を超えて開発することを選択した場合、一貫した動作を保証できません。" _

画像をphpプリプロセッサにアップロードできますか? (http://asido.info/[Here’s] Googleからのもの)