Screencapture并保存到JPG,Actionscript 2.0

时间:2015-01-18 15:34:06

标签: flash actionscript

我创建了一个flash文件,可以通过单击每个受尊重的按钮来创建影片剪辑。我想要做的是,在我定位所有这些创建的影片剪辑后,我想将其保存为JPEG或PNG图像文件。我创建了一个保存按钮,并将其命名为“save_page_btn”。我试图使用AS 2.0找到教程,但它似乎无济于事。我在AS 3.0中没有基本功能。任何人都可以帮我找到这个解决方案。

谢谢大家!

1 个答案:

答案 0 :(得分:0)

ActionScript 2:

对于ActionScript 2,您必须使用服务器端脚本保存图像,例如我在my answer for this question中使用的PHP脚本。

ActionScript 3:

对于ActionScript 3,事情变得更加容易,因为FileReference使我们能够将save文件直接发送到我们的计算机。

因此,对于您来说,您希望将图像保存为jpg或png文件,您可以使用as3corelib库中包含的JPGEncoderPNGEncoder来执行此操作。您可以从here下载它,然后将其包含在项目中:文件> ActionScript设置...>库路径,然后按浏览到SWC文件选项卡,然后选择as3corelib.swc下载的文件。然后你可以这样做:

// in my stage, I have 2 buttons : btn_save_jpg and btn_save_png, and a MovieClip : movie_clip

import com.adobe.images.JPGEncoder;
import com.adobe.images.PNGEncoder;

btn_save_jpg.addEventListener(MouseEvent.CLICK, save_img);
btn_save_png.addEventListener(MouseEvent.CLICK, save_img);

function save_img(e:MouseEvent):void {

    // verify which button is pressed using its name
    var is_jpg:Boolean = (e.currentTarget.name).substr(-3, 3) == 'jpg'; 
    // you can also write it : var is_jpg:Boolean = e.currentTarget === btn_save_jpg;   

    // create our BitmapData and draw within our movie_clip MovieClip
    var bmd_src:BitmapData = new BitmapData(movie_clip.width, movie_clip.height)
        bmd_src.draw(movie_clip);

    if(is_jpg){     
        // if it's the btn_save_jpg button which is pressed, so create our JPGEncoder instance
        // for the btn_save_png button, we don't need to create an instance of PNGEncoder 
        // because PNGEncoder.encode is a static function so we can call it directly : PNGEncoder.encode()
        var encoder:JPGEncoder = new JPGEncoder(90);
        // 90 is the quality of our jpg, 0 is the worst and 100 is the best
    }

    // get encoded BitmapData as a ByteArray
    var stream:ByteArray = is_jpg ? encoder.encode(bmd_src) : PNGEncoder.encode(bmd_src);

    // open the save dialog to save our image 
    var file:FileReference = new FileReference();
        file.save(stream, 'snapshot_' + getTimer() + (is_jpg ? '.jpg' : '.png'));

}

如果您对AS3(甚至AS2)代码有疑问,请不要犹豫,使用评论区域询问。

希望可以提供帮助。