【问题标题】:Display progressive JPEG in Flash during the loading在加载过程中在 Flash 中显示渐进式 JPEG
【发布时间】:2012-06-30 03:17:25
【问题描述】:

我需要以渐进式 JPEG 格式显示图像(http://en.wikipedia.org/wiki/JPEG#JPEG_compression,不要与顺序 JPEG 的渐进式显示相混淆)。 Flash 支持加载渐进式 JPEG,但我不知道如何在加载过程中显示它。简短的谷歌搜索让我可以逐步加载顺序 JPEG,仅此而已。

【问题讨论】:

标签: actionscript-3 flash jpeg progressive


【解决方案1】:

它会是这样的:

// 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);
    }
}

请注意,loadBytes 进程是异步的。此外,当您使用不可解析的字节数组尝试它时(通常是第一次调用 onProgress,当没有足够的图像数据要处理时)它会静默失败,因此您需要以某种方式保证您有足够的数据......在这种情况下我使用if(bytes.length > 4096) ;)

【讨论】:

  • 您的解决方案加载图像但无法确定其实际尺寸。
  • 您应该能够在 loader.contentLoaderInfo 的第一个完整事件中获取图像尺寸;)
猜你喜欢
  • 2011-06-12
  • 2011-08-25
  • 2013-03-13
  • 1970-01-01
  • 2017-06-03
  • 2015-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多