Actionscript 3 使用动作脚本3下载并保存jpeg

Actionscript 3 使用动作脚本3下载并保存jpeg,actionscript-3,flash-cs5,Actionscript 3,Flash Cs5,嗨,我需要一些关于如何下载通过URL寻址的jpeg图像的指导,并使用动作脚本3将其保存到本地光盘 Iv找到的大多数解决方案都需要JPEG编码库,但我不明白为什么我必须对任何东西进行编码。该文件已经是JPGE格式,为什么我需要将其作为位图数据下载,然后使用一些庞大的JPEG编码类将其重新转换为JPEG格式,然后再将其保存到光盘中 我需要一个高效的解决方案来绕过这个问题。你不需要 var stream:URLStream = new URLStream(); stream.addEventListe

嗨,我需要一些关于如何下载通过URL寻址的jpeg图像的指导,并使用动作脚本3将其保存到本地光盘

Iv找到的大多数解决方案都需要JPEG编码库,但我不明白为什么我必须对任何东西进行编码。该文件已经是JPGE格式,为什么我需要将其作为位图数据下载,然后使用一些庞大的JPEG编码类将其重新转换为JPEG格式,然后再将其保存到光盘中

我需要一个高效的解决方案来绕过这个问题。

你不需要

var stream:URLStream = new URLStream();
stream.addEventListener( Event.COMPLETE, completeHandler );
stream.load( "URL TO JPG");

function completeHandler( e:Event ):void {
    var bytes:ByteArray = new ByteArray();
    stream.readBytes( bytes );

    // use either FileStream or FileReference to save the byte array
}

当您将JPG加载到
位图数据中时,它实际上会解压缩JPG数据。所以这就是为什么你不能直接保存它。。。JPG不再是JPG,此时它是一个未压缩的位图。您还可以直接从
ByteArray
加载位图数据,因此,如果需要,您还可以显示图像。

感谢启示录3。到目前为止看起来不错,但我在实现保存文件的解决方案的最后一部分时遇到了困难。请您完成它好吗?如果这是一个用于web的SWF,请使用
FileReference.save(bytes,“filename.jpg”)
。如果这是一个AIR应用程序,您可以将
FileStream.writeBytes(bytes)
文件
结合使用,不过您也应该能够使用FileReference,这为用户提供了将文件保存到所需位置的选项。除此之外,做一些搜索。这方面有很多详细的例子,我尝试使用FileReference,但我的代码生成了一个“保存文件框”,用户可以指定文件的放置位置。我需要代码自动将文件保存在与fla文件相同的位置,无需用户输入。请小心,因为FileStream仅适用于Adobe AIR应用程序,而不适用于web上使用的SWF。除了通过SharedObjects之外,SWFs无法从web以静默方式保存到磁盘