• [ActionScript 3.0] 通过BitmapData将对象保存成jpg图片


    此方法需要用到JPGEncoder.as和BitString.as这两个类,是将BitmapData对象转换成ByteArray,然后通过FileStream把此ByteArray写入到文件保存成jpg图片,因为用到File相关类,故需要用air播放器发布flash,在此提供两个下载JPGEncoder.as和BitString.as类的地址,

    CSDN:http://download.csdn.net/source/3205224

    Adobe官方的CoreLib下载: http://code.google.com/p/as3corelib/ 使用其中的:com.adobe.images.JPEGEncoder

    以下是一个简单例子,SaveToJPEG .as 类 可直接作为文档类

     1 package 
     2 {
     3     import JPEGEncoder.JPGEncoder;
     4     import flash.display.Bitmap;
     5     import flash.display.BitmapData;
     6     import flash.display.Loader;
     7     import flash.display.MovieClip;
     8     import flash.display.Sprite;
     9     import flash.events.Event;
    10     import flash.events.MouseEvent;
    11     import flash.filesystem.File;
    12     import flash.filesystem.FileMode;
    13     import flash.filesystem.FileStream;
    14     import flash.geom.Rectangle;
    15     import flash.net.URLRequest;
    16     import flash.text.TextField;
    17     import flash.text.TextFieldAutoSize;
    18     import flash.utils.ByteArray;
    19 
    20     /**
    21       * ...
    22       * @author Frost.Yen
    23       */
    24     public class SaveToJPEG extends Sprite
    25     {
    26         var ldr:Loader = new Loader();
    27         var rect:Rectangle;
    28         var bytearr:ByteArray;
    29         public function SaveToJPEG():void
    30         {
    31             init();
    32         }
    33 
    34         private function init():void
    35         {
    36             var btnMC:MovieClip = new MovieClip();
    37             btnMC.graphics.beginFill(0xcccccc);
    38             btnMC.graphics.drawRoundRect(0, 0, 100, 40, 10, 10);
    39             btnMC.graphics.endFill();
    40             btnMC.x = 630;
    41             btnMC.y = 50;
    42             btnMC.buttonMode = true;
    43             btnMC.addEventListener(MouseEvent.CLICK, onClick);
    44             this.addChild(btnMC);
    45 
    46             var txt:TextField = new TextField();
    47             txt.autoSize = TextFieldAutoSize.LEFT;
    48             txt.selectable = false;
    49             txt.mouseEnabled = false;
    50             txt.text = "点击保存此图片";
    51             txt.x = (btnMC.width - txt.width) / 2;
    52             txt.y = (btnMC.height - txt.height) / 2;
    53             btnMC.addChild(txt);
    54 
    55             ldr.load(new URLRequest("http://hiphotos.baidu.com/frostyen/pic/item/7e49d8b53f6b48ffd9335aa2.jpg"));
    56             ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
    57         }
    58 
    59         private function onClick(e:MouseEvent):void
    60         {
    61             if (bytearr != null)
    62             {
    63                 var file:File = new File();
    64                 file.browseForDirectory("保存");
    65                 file.addEventListener(Event.SELECT, onSelectPath);
    66             }
    67         }
    68 
    69         private function onSelectPath(e:Event):void
    70         {
    71             var file:File = (e.target as File).resolvePath("松竹梅副本.jpg");
    72             var filestream:FileStream = new FileStream();
    73             filestream.open(file, FileMode.WRITE);
    74             filestream.writeBytes(bytearr);
    75         }
    76 
    77         private function onComplete(e:Event):void
    78         {
    79             this.addChild(ldr);
    80             rect = ldr.getRect(ldr);
    81 
    82             var bmpd:BitmapData = new BitmapData(rect.width,rect.height);
    83             bmpd.draw(ldr);
    84             var jpg:JPGEncoder = new JPGEncoder();
    85             bytearr = jpg.encode(bmpd) as ByteArray;
    86         }
    87     }
    88 }
  • 相关阅读:
    Door Frames CodeForces
    POJ 3090 Visible Lattice Points (ZOJ 2777)
    从斐波那契到矩阵快速幂
    Recursive sequence (矩阵快速幂)2016ACM/ICPC亚洲区沈阳站
    c++ 类实现 AVL树容器(包含迭代器)
    c++ 链表类的实现(包含迭代器)
    HDU
    【几何+模拟】二次元变换 计蒜客
    【bfs+链式向前星】防御僵尸(defend)计蒜客
    deque in Python
  • 原文地址:https://www.cnblogs.com/frost-yen/p/4589308.html
Copyright © 2020-2023  润新知