2012-06-28 11 views
8

Ich muss das Bild im progressiven JPEG-Format anzeigen (http://en.wikipedia.org/wiki/JPEG#JPEG_compression, nicht zu verwechseln mit der progressiven Anzeige von sequenziellem JPEG). Flash unterstützt das Laden von Progressive JPEG, aber ich habe keine Ahnung, wie ich es beim Laden anzeigen soll. Kurzes Googlen gibt mir progressives Laden von sequentiellem JPEG und sonst nichts.Progressive JPEG in Flash während des Ladens anzeigen

+0

Meinst du wie hier gefragt? http://stackoverflow.com/questions/1814833/how-to-dynamically-load-a-progressive-jpeg-jpg-in-actionscript-3-using-flash-and –

Antwort

4

Es wäre in etwa so gehen:

// the loader containing the image 
var loading:Boolean = false; 
var loader:Loader = new Loader(); 
addChild(loader); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function() { 
    loading = false; 
    trace(loader.width, loader.height); 
}); 

var bytes:ByteArray = new ByteArray(); 

var stream:URLStream = new URLStream(); 
stream.addEventListener(ProgressEvent.PROGRESS, onProgress); 
stream.addEventListener(Event.COMPLETE, onProgress); 
stream.load(new URLRequest(imageURL)); 

function onProgress(e:Event):void { 
    stream.readBytes(bytes, bytes.length); 
    if((bytes.length > 4096 && !loading) || e.type == Event.COMPLETE) { 
     loading = true; 
     loader.loadBytes(bytes); 
    } 
} 

Beachten Sie, dass der Prozess asynchron ist loadbytes. Wenn Sie es mit einem nichtparabelbaren Bytearray versuchen (normalerweise die ersten Aufrufe von onProgress, wenn nicht genügend Bilddaten zur Verarbeitung vorhanden sind), schlägt es automatisch fehl, also müssen Sie irgendwie garantieren, dass Sie genügend Daten haben ... in diesem Fall habe ich verwendet if (bytes.length> 4096);)

+0

Ihre Lösung lädt das Bild, aber es kann nicht festgestellt werden tatsächliche Abmessungen. – Pehat

+0

Sie sollten in der Lage sein, die Bilddimensionen beim ersten vollständigen Ereignis von loader.contentLoaderInfo zu erhalten;) – Cay

Verwandte Themen