Получить размер локально загруженного большого изображения - PullRequest
2 голосов
/ 12 февраля 2010

Я пытаюсь прочитать ширину и высоту локально загруженного изображения. Кажется, это работает для изображений, размер которых не превышает размеры, ограниченные 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 ]

4 голосов
/ 12 февраля 2010

Вы можете пропустить загрузку всего изображения и просто прочитать заголовки с помощью этого класса .

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 голосов
/ 12 февраля 2010

Я бы, по крайней мере, ожидал, что ошибка будет последовательной.

Что ж, по крайней мере, Adobe достаточно ясно говорит об этом: "... если вы решите развиваться за пределами этих границ, мы не сможем гарантировать последовательное поведение". Не могли бы вы загрузить свое изображение в препроцессор php? ( Вот один от Google)

...