zoukankan      html  css  js  c++  java
  • SWFKit+BitmapData,生成本地JPG

    //////////////////////////////////////////////////////////////////////////////////////////////////////////
    //功能注:转换BitmapData成JPG,用SWFKit打包后不需要服务器和其它外部控件支持既可直接在本地生成图片
    //汇源者:大盗二十八
    //拓展注:读取,混淆,生成,还原任意二进制文件,其它您能想到的,前提是自己清楚加密算法哈
    //用法注:第一步,Flash cs3,建立一个包含图片的mc,然后删除,再在库中设置该mc的链接名为"mc",拖个Button组件到库中,在场景第一帧加上as;
    //用法注:第二步,SWFKit Pro3.4(3.2版本也可),导入swf后,在Scripts窗口右上方Items处下拉条选择Initialize,然后粘贴属于FFish的函数代码。
    //////////////////////////////////////////////////////////////////////////////////////////////////////////
    /
    import flash.display.Sprite;
    import fl.controls.Button;
    import flash.events.MouseEvent;
    import mx.graphics.codec.JPEGEncoder;
    import Base64;
    import SWFKit.*;
    var P_Btn1: Button;
    var P_Btn2: Button;
    var P_line: Sprite;
    var P_Box : Sprite;
    var P_Pic 
    = new mc();
    function Paint_it() {
        P_Btn1 
    = new Button();
        P_Btn1.y 
    = 350;
        P_Btn1.x 
    = 5;
        P_Btn1.label 
    = "清除";
        P_Btn2 
    = new Button();
        P_Btn2.y 
    = 390;
        P_Btn2.x 
    = 5;
        P_Btn2.label 
    = "保存";
        addChild(P_Btn1);
        addChild(P_Btn2);
        
        P_Btn1.addEventListener(MouseEvent.MOUSE_DOWN, P_Clear);
        P_Btn2.addEventListener(MouseEvent.MOUSE_DOWN, P_Save);
        addEventListener(MouseEvent.MOUSE_DOWN, P_Down);
        addEventListener(MouseEvent.MOUSE_UP, P_Up);
        P_Box 
    = new Sprite();
        P_line 
    = new Sprite();
        P_line.graphics.lineStyle(
    5,0xffcc00);
        addChild(P_Box);
        P_Box.addChild(P_Pic);
        P_Pic.addChild(P_line);
        P_Pic.x 
    = 110;
        P_Pic.y 
    = 5;
    }
    function P_Clear(event:MouseEvent):
    void {
        event.stopPropagation();
    //看帮助吧,很详尽,呵呵。
        
        P_line.graphics.clear();
        P_line.graphics.lineStyle(
    5,0xffcc00);
    }
    function P_Save(event:MouseEvent):
    void {
        event.stopPropagation();
        
        var P_Bmp:BitmapData  
    = new BitmapData(P_Pic.width, P_Pic.height);
        P_Bmp.draw(P_Pic);
        
        var P_Jpg:JPEGEncoder 
    = new JPEGEncoder(75);
        var P_Byte:ByteArray 
    = P_Jpg.encode(P_Bmp);
        
        var encoded:String 
    = Base64.encodeByteArray(P_Byte);
        ExternalInterface.call(
    "saveByte", encoded);//直接调用SWFKit的FFish Script语言Initialize标签saveByte函数,传递字符串。
    //这个是两软件交换数据之处!
    }
    function P_Down(event:MouseEvent):
    void {
        addEventListener(MouseEvent.MOUSE_MOVE, P_Move);
        P_line.graphics.moveTo(mouseX
    -110, mouseY);
    }
    function P_Move(event:MouseEvent):
    void {
        P_line.graphics.lineTo(mouseX
    -110, mouseY);
    }
    function P_Up(event:MouseEvent):
    void {
        removeEventListener(MouseEvent.MOUSE_MOVE, P_Move);
    }
    Paint_it();
    ///////////////////////////////////////////////////////////
    //以下代码请写到SWFKit的Scripts里Items的Initialize内:
    ////////////////////////////////////////////////////////////

    //Initialize
    //getAdditionalFile();
    //return true;
    function saveByte(file) {
        var converter 
    = new Base64();
        var newStream 
    = converter.decode(file);
        var dlg 
    = new Dialogs;
        var output 
    = dlg.fileSave("JPG Files(*.jpg)|*.jpg|All Files(*.*)|*.*|""jpg","bitmap_jpg.jpg");
        newStream.saveToFile(output);
    }
    function Base64()
    {
       
    this.keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
       function readByte(input)
       {
          var ch 
    = input.get();
          
    if (input.eof) return NaN;      
          
    return ch;
       }
       function encode(input) 
          {
           var output 
    = new StringStream;
           var chr1, chr2, chr3 ;
           var enc1, enc2, enc3, enc4;
           
    do 
           {
             chr1 
    = this.readByte(input);
             chr2 
    = this.readByte(input);
             chr3 
    = this.readByte(input);
             enc1 
    = chr1 >> 2;
             enc2 
    = ((chr1 & 3<< 4| (chr2 >> 4);
             enc3 
    = ((chr2 & 15<< 2| (chr3 >> 6);
             enc4 
    = chr3 & 63;
             
    if (isNaN(chr2)) 
             {
                enc3 
    = enc4 = 64;
             } 
             
    else if (isNaN(chr3)) 
             {
                enc4 
    = 64;
             }
             output.write(
    this.keyStr.charAt(enc1) + this.keyStr.charAt(enc2) + 
                   
    this.keyStr.charAt(enc3) + this.keyStr.charAt(enc4));               
             } 
    while (!input.eof);
             
    return output;
         }
         function decode(input) 
          {
             var output 
    = new StringStream;
             var chr1, chr2, chr3;
             var enc1, enc2, enc3, enc4;
             var i 
    = 0;
             
             var base64test 
    = new RegExp("[^A-Za-z0-9+/=]""g");
             
    if (base64test.exec(input)) 
             {
                trace(
    "Base64.decode: ""invalid input string");
                
    return null;
             } 
             
    do 
             {
                enc1 
    = this.keyStr.indexOf(input.charAt(i++));
                enc2 
    = this.keyStr.indexOf(input.charAt(i++));
                enc3 
    = this.keyStr.indexOf(input.charAt(i++));
                enc4 
    = this.keyStr.indexOf(input.charAt(i++));
                
                chr1 
    = (enc1 << 2| (enc2 >> 4);
                chr2 
    = ((enc2 & 15<< 4| (enc3 >> 2);
                chr3 
    = ((enc3 & 3<< 6| enc4;
                
                output.put(String.fromCharCode(chr1));
                
                
    if (enc3 != 64
                {
                   output.put(String.fromCharCode(chr2));
                }            
                
    if (enc4 != 64
                {
                   output.put(String.fromCharCode(chr3));
                }
             } 
    while (i < input.length);
             
    return output;
       }
  • 相关阅读:
    减肥 day1
    这两天的学习内容
    小马激活工具激活系统导致系统崩溃
    mac OS X下Java项目环境搭建+IntelliJ IDEA Jrebel插件安装与破解+Office 2016破解版安装
    JDK 动态代理实现原理
    php ajax提交post请求出现数组被截断情况的解决方法
    mac OS X下git代码行统计命令
    mac OS X下安装Redis及Thinkphp3.1使用Redis
    linux服务器git pull/push时提示输入账号密码之免除设置
    linux服务器修改ftp默认21端口方法
  • 原文地址:https://www.cnblogs.com/sevenyuan/p/1607119.html
Copyright © 2011-2022 走看看