Файл Flex 4Ссылка на выбранные размеры файла изображения (ширина и высота) - PullRequest
3 голосов
/ 09 августа 2010

Я использую fileReference.browse (), чтобы выбрать файл изображения на жестком диске.

Как проверить ширину и высоту выбранного файла изображения?

Спасибо!

Ответы [ 3 ]

8 голосов
/ 29 августа 2010

Загрузить файл fileReference.data в загрузчик с помощью loadBytes (). Тогда у вас будет: sourceBMP: Bitmap = loader.content as Bitmap;

Вот пример кода:

MXML часть:

<fx:Declarations>
    <net:FileReference id="fileReference"
        select="fileReference_select(event);"
        complete="fileReference_complete(event);" />
</fx:Declarations>
<s:Button id="uplaodImageBtn"
    label="Upload Image"
    click="uplaodImageBtn_clickHandler()"/>

AS3 часть:

private function uplaodImageBtn_clickHandler() : void {
    var arr:Array = [];
    arr.push(new FileFilter("Images", ".gif;*.jpeg;*.jpg;*.png"));
    fileReference.browse(arr);
}

private function fileReference_select(evt:Event):void {
    fileReference.load();
}

private function fileReference_complete(event:Event):void {
    var loader:Loader = new Loader();
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_complete);
    loader.loadBytes(fileReference.data);
}

public function loader_complete (event:Event) : void {
    var sourceBMP:Bitmap = event.currentTarget.loader.content as Bitmap;
    Alert.show(sourceBMP.width + ', ' +sourceBMP.height);
}
1 голос
/ 14 октября 2011

Вы должны быть в состоянии прочитать изображения image.sourceWidth и image.sourceHeight, если ждете обновления свойства источника изображения.Это даст вам немасштабированные исходные значения.

<fx:Script>
    <![CDATA[

        import mx.events.FlexEvent;     

        private function browseImage(event:MouseEvent):void {
            var arr:Array = [];
            arr.push(new FileFilter("Images", ".gif;*.jpeg;*.jpg;*.png"));
            imageFileReference.browse(arr);         
        }

        private function imageSelect(evt:Event):void {
            imageFileReference.load();
        }

        private function imageComplete(evt:Event):void {
            image.source = smallImageFileReference.data;
            image.addEventListener(FlexEvent.UPDATE_COMPLETE, getImageSize);                
        }

        private function getImageSize(evt:FlexEvent):void {
            image.removeEventListener(FlexEvent.UPDATE_COMPLETE, getImageSize);         
            imageWidth.text = image.sourceWidth + "px";
            imageHeight.text = image.sourceHeight + "px";
        }
    ]]>

</fx:Script>

<fx:Declarations>
    <net:FileReference id="imageFileReference" 
        select="imageSelect(event)" 
        complete="imageComplete(event)"/>
</fx:Declarations>

<s:VGroup width="100%" height="100%">

    <s:HGroup width="100%" verticalAlign="middle">
        <s:Label fontWeight="bold" text="Width:" />
        <mx:Text id="imageWidth" />
    </s:HGroup> 

    <s:HGroup width="100%" verticalAlign="middle">
        <s:Label fontWeight="bold" text="Height:" />
        <mx:Text id="imageHeight" />
    </s:HGroup>

    <s:Image id="image" maxHeight="200" maxWidth="200" />
    <s:Button label="Browse for Image" click="browseImage(event)" />

</s:VGroup>
1 голос
/ 09 августа 2010

Из контекста Flex, я почти уверен, что вы получите результаты обратно из браузера, это всего лишь byteArray.Теоретически, если вы используете этот byteArray в качестве источника для тега изображения, вы сможете получить высоту и ширину таким образом, как только вы добавите это изображение в контейнер.

В противном случае, я не верю, что тамэто простой способ получить такую ​​информацию метаданных из локальных файлов с помощью Flex.

...