1

画像をByteArrayにエンコードしました。そのByteArrayからビットマップに変換する方法は?ありがとう。ウリ

4

5 に答える 5

2

以下でこのテストを行いましたが、うまく機能します。Bytearray を Bitmap に変換します。画像の形式は問いません。png、jpg、gif はすべて、bitmapdata クラスが解釈するメタデータにフォーマットを保持します。保存するときは、JPEGEncoder または PNGEncoder を使用する必要があります。

        import mx.events.FlexEvent;

        public var _file:File;
        public var _stream:FileStream;
        public var _load:Loader;

        protected function init(event:FlexEvent):void {
            _file = File.desktopDirectory;
            _file.addEventListener( Event.SELECT, selectComplete);
            _file.browseForOpen( 'Image' );
        }
        private function selectComplete( event:Event ):void {
            _stream = new FileStream();
            _stream.addEventListener( Event.COMPLETE, loadComplete );
            _stream.openAsync( _file, FileMode.READ );
        }
        private function loadComplete( event:Event ):void {
            var ba:ByteArray = new ByteArray();
            _stream.readBytes( ba );
            _load = new Loader();
            _load.contentLoaderInfo.addEventListener( Event.COMPLETE, loadbytesComplete );
            _load.loadBytes( ba );
        }
        private function loadbytesComplete( event:Event ):void {
            var bit:Bitmap = _load.content as Bitmap;
            img.source = bit;
        }
于 2012-07-27T01:53:25.690 に答える
1

あなたのフォーマットは何ByteArrayですか?ピクセルが32ビットARGB形式の場合は、を使用して新しいBitmapDataオブジェクトを作成し、ピクセルを設定できますBitmapData.setPixels()。次に、ビットマップデータをビットマップオブジェクトに割り当てます。

32ビットARGB形式でない場合は、最初に変換する必要があります。

于 2012-05-24T15:44:17.113 に答える
0

このクラスが役に立ちます: http://code.google.com/p/as3asclublib/source/browse/trunk/display/image/PNGDecoder.as?spec=svn123&r=123

于 2012-09-16T06:37:54.990 に答える
0
[Bindable]
private static var m_barrLogo:ByteArray;
.
.
.
private function init_m_barrLogo():void
{
    m_barrLogo = someValue;

    // The Image below will automatically read the new value of the ByteArray and
    // display the appropriate image.
}
.
.
.
<mx:Image source="{m_barrLogo}" y="10" x="10" scaleContent="true" height="140"
        width="145"/>
于 2013-12-31T16:33:48.837 に答える
0

ローダーを使用

import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.events.Event;
import flash.display.BitmapData;
 
private function startLoad():void
{
  var loader:Loader = new Loader();
  loader.loadBytes(byteArray);
  loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderComplete);
}     

private function loaderComplete(event:Event):void
{
    var loaderInfo:LoaderInfo = LoaderInfo(event.target);
    var bitmapData:BitmapData = new BitmapData(loaderInfo.width, loaderInfo.height, false, 0xFFFFFF);
    bitmapData.draw(loaderInfo.loader);
    // result: bitmapData
}
于 2012-05-24T15:51:56.733 に答える