2

Loader (変数名は faceimage) を使用して画像を読み取ろうとしており、その画像のビットマップデータを detect という関数に渡そうとしています。ただし、ビットマップを取得しようとしている行で失敗しています。

    bmpTarget = new Bitmap( new BitmapData( faceImage.width, faceImage.height, false ) )
    bmpTarget.bitmapData.draw( faceImage ); // Fails, no errors shown
    detector.detect( bmpTarget.bitmapData );

失敗した行の上下にトレース ステートメントを配置して、この行に絞り込みました。faceImage には、画面にコンテンツを表示して確認した有効なデータが含まれています。私も試しました

    bmpTarget = Bitmap(BitmapData(faceImage.content))

しかし無駄に。ここで何か間違ったことをしていますか?

4

3 に答える 3

1

から指摘されているように: ローダーオブジェクトがbitmapdata draw();を強制終了するのはなぜですか?

おそらくが必要ですLoaderContext

loader.load("http://www.example.com/myimage.jpg", new LoaderContext(true));

それ以外の場合は、他のサイトから画像を読み込むことはできますが、実際のbitmapDataにアクセスすることはできませんdraw()

于 2012-06-27T07:32:07.760 に答える
1

サンドボックス/クロスドメインの問題である可能性があります。特定のクロスドメイン設定では、ロードされたイメージのコンテンツを bitmapData に描画することが禁止されています。で生の画像データをロードしてから onURLLoaderを使用することで、これを回避できます。loadBytesLoader

于 2012-06-27T07:27:45.530 に答える
1

ロードされる前にビットマップデータにアクセスしようとしているのだろうか?

おそらく、完全なリスナーを使用してみてください...

var _urlRequest:URLRequest = new URLRequest("urlToImage");
var faceImage:Loader = new Loader;
faceImage.load(_urlRequest);
faceImage.addEventListener(IOErrorEvent.IO_ERROR, function(e:IOErrorEvent):void{ trace(e) });
faceImage.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded, false, 0, true);

function imageLoaded(e:Event):void {

faceImage.contentLoaderInfo.removeEventListener(Event.COMPLETE, imageLoaded);
var bmpTarget:Bitmap = e.target.content;
detector.detect( bmpTarget.bitmapData );
}
于 2012-06-27T14:42:58.457 に答える