Flash Actionscript 多线程Worker 压缩图片

package
{
        import flash.display.Bitmap;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.external.ExternalInterface;
        import flash.geom.Rectangle;
        import flash.system.MessageChannel;
        import flash.system.Worker;
        import flash.system.WorkerDomain;
        import flash.utils.ByteArray;public class WorkerTest extends Sprite
       {
               protected var mainToWorker:MessageChannel;
               protected var workerToMain:MessageChannel;

               protected var worker:Worker;

              [ Embed(source= "1.jpg")]
               public var Image1:Class;

               public function WorkerTest()
              {
                      /**
                      * Start Main thread
                      **/
                      if(Worker.current.isPrimordial){
                            //Create worker from our own loaderInfo.bytes
                           worker = WorkerDomain.current.createWorker(this.loaderInfo.bytes);

                            //Create messaging channels for 2-way messaging
                           mainToWorker = Worker.current.createMessageChannel(worker);
                           workerToMain = worker.createMessageChannel(Worker.current);

                            var byteArray:ByteArray = Bitmap(new Image1()).bitmapData.getPixels(new Rectangle(0,0,300,300));
                           byteArray. shareable = true;        //使bytearray可以在两个线程中使用

                            //Inject messaging channels as a shared property
                           worker.setSharedProperty( "data", byteArray);

                            //Listen to the response from our worker
                           workerToMain.addEventListener(Event.CHANNEL_MESSAGE, onWorkerToMain);

                            //Start worker (re-run document class)
                           worker.start();

                     }
                      /**
                      * Start Worker thread
                      **/
                      else {

                            //Inside of our worker, we can use static methods to
                            //access the shared messgaeChannel‘s
                            var data:ByteArray = Worker.current.getSharedProperty( "data");
                           workerToMain = Worker.current.getSharedProperty( "workerToMain" );
                                           //这里可以做一些压缩的工作                data.compress();
                           workerToMain.send(data);  //只要byteArray是shareable的,可以直接send

                     }
              }
              //Messages to the worker thread
               protected function onWorkerToMain(event:Event): void {
                      //Trace out whatever message the worker has sent us.
                      var a:* = workerToMain.receive();
                      trace("[Worker] " + a);
                     ExternalInterface.call( "alert", a);     //debug版Flashbuilder4.6运行会收不到消息,但release版或断开debug连接就没问题
              }
       }
}

Flash Actionscript 多线程Worker 压缩图片

时间: 2024-08-06 15:43:13

Flash Actionscript 多线程Worker 压缩图片的相关文章

Flash Actionscript AS3 渐变透明 mask遮罩

把图片变成渐变透明(左图是效果图,右图是原图) var a:Sprite = new Sprite(); a.graphics.beginGradientFill(GradientType.LINEAR, [0xff0000,0xff0000], [1,0.3], [0, 255]); a.graphics.drawRect(0, 0, 240, 225); a.graphics.endFill(); addChild(a); a.rotation = 90; a.x = 226; aaa.ma

C# Winform版批量压缩图片程序

需求 上周,领导给我分配了一个需求:服务器上的图片文件非常大,每天要用掉两个G的大小的空间,要做一个自动压缩图片的工具处理这些大图片.领导的思路是这样的: 1)打开一个图片,看它的属性里面象素是多少,大于1000就按比例缩小到1000. 2)再看它的品质属性,比如我们标准是50,如果大于这个值再修改品质. 压缩后的文件大小不能超过200k. 思路 因为服务器上的图片文件名是加密处理过的,和图片文件一起存在的还有其它附件,没有后缀名,用肉眼根本看不出来是否是图片文件.所以刚开始的时候,我的思路是先

Android压缩图片和libjpeg库

前言 Fjpeg使用 Fjpeg 注意 如何使用 如何压缩图片只改变在硬盘的存储大小 如何改变图片分辨率让其Bitmap对象可以加载到内存中 关于重载版本 开始学习之旅 补充知识的结论 修改图片分辨率 防止在Android加载Bitmap的时候oom内存溢出 解决方案1 解决方案2 希望压缩图片方便网络传输 第一种方案利用Bitmapcompress方法压缩 第二种利用libjpeg压缩 在Android50测试两个 图片压缩 在Android60测试两个 图片压缩 解释Android50和60

Grunt压缩图片

今天我们来说一下用Grunt来压缩图片和JS吧! 首先要安装插件: 这是压缩图片的; npm install --save-dev gulp-imagemin 这是压缩JS的: npm install --save-dev gulp-imagemin 然后引入依赖: var gulp = require("gulp"); 在引入插件: var imagemin = require('gulp-imagemin');//压缩图片 var uglifyJS = require('gulp-

在 Flash ActionScript 2.0 中调用 Javascript 方法

本篇文章由:http://xinpure.com/call-the-javascript-method-in-flash-actionscript-2-0/ 在 Flash ActionScript 2.0 中调用 Javascript 方法 最近在工作中,有个这样的需求: 要从 Flash ActionScript 2.0 中调用网页上的 Javascript 方法 这是一个关于 Flash 和 Javascript 交互的问题. 在 ActionScript 2.0 中调用外部 javasc

C# 的时间戳 在flash actionscript中使用

目前在做一个项目,要以字节的方式传时间戳到flash中, 错误的就不写了,只写一个可以使用的如下: C# DateTime centuryBegin = new DateTime(1970, 1, 1,0,0,0); DateTime currentDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute,DateTime.

android压缩图片,解决oom错误

你的ImageView只有128*96像素的大小,只是为了显示一张缩略图,这时候把一张1024*768像素的图片完全加载到内存中显然是不值得的. 所以我们需要一个方法来解决这个问题. [java] view plaincopy public static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) { // 源图片的高度和宽度 final int height = op

压缩图片

NSData *data = UIImageJPEGRepresentation(image, 0.001); UIImage * preImage = [UIImage imageWithData:data]; [preImage drawInRect:CGRectMake(0, 0, ScreenWidth, ScreenHeight)]; 压缩图片分压和缩 如果只压,压到一定比例就不能再压了 所以还要缩

iOS一行代码压缩图片大小

现在基本所有应用都与图片相关联,这就必然涉及到上传下载图片,而用户的流量又迟迟没有被解放,因此图片就不能太大,我们知道iPhone一张照片动辄几M,如果都传原图那流量就会爆炸,粗暴地缩小又会影响图片的分辨率.那有没有办法在保持一定分辨率的情况下压缩图片呢?有的,而且非常简单,一行代码搞定,是苹果自带的压缩函数: UIImageJPEGRepresentation UIImagePNGRepresentation 这两个函数都是iOS自带的图片压缩工具.一个是压成JPEG格式,一个是压成PNG格式