- 浏览: 902868 次
- 性别:
- 来自: 青岛
文章分类
最新评论
-
chienchia:
请问下,第4步,vpn做了什么使数据包发送到真实网卡,而不会再 ...
如何使用Android系统自带的VPN服务框架 -
fangyafenqidai:
我只要选第二个就可以呢,怒需要选第一个。之后不会有啥问题。正常 ...
Android Studio 超级简单的打包生成apk -
michaelye1988:
不错,很棒!
getcachedir和getexternalcachedir的区别 -
whlei01:
文章棒棒哒
常用的AS3代码 -
whlei01:
很不错 之前打开及时600M的内存 ,现在打开只有300兆了 ...
flash builder内存不够的解决办法
引用
注意:
as3中图片转换成ByteArray再由ByteArray转换成图片的过程。
其中是调用Abode官方的类 PNGEncoder来实现的。但是之前总是报错,具体如下:
var encoder:PNGEncoder = new PNGEncoder();
然后var bytes:ByteArray=encoder.encode(_bmd);
调用encode这个方法
结果报错 1061: 调用可能未定义的方法 encode (通过 static 类型 PNGEncoder 引用)。
后来我才发现,需要将var encoder:PNGEncoder = new PNGEncoder();
然后var bytes:ByteArray=encoder.encode(_bmd); 这两句改成
var bytes:ByteArray=PNGEncoder.encode(_bmd); 因为encode为静态函数。
首先为 Abode官方的类 PNGEncoder
package { import flash.geom.*; import flash.display.Bitmap; import flash.display.BitmapData; import flash.utils.ByteArray; /** * Class that converts BitmapData into a valid PNG */ public class PNGEncoder { /** * Created a PNG image from the specified BitmapData * * @param image The BitmapData that will be converted into the PNG format. * @return a ByteArray representing the PNG encoded image data. * @langversion ActionScript 3.0 * @playerversion Flash 9.0 * @tiptext */ public static function encode(img:BitmapData):ByteArray { // Create output byte array var png:ByteArray = new ByteArray(); // Write PNG signature png.writeUnsignedInt(0x89504e47); png.writeUnsignedInt(0x0D0A1A0A); // Build IHDR chunk var IHDR:ByteArray = new ByteArray(); IHDR.writeInt(img.width); IHDR.writeInt(img.height); IHDR.writeUnsignedInt(0x08060000); // 32bit RGBA IHDR.writeByte(0); writeChunk(png,0x49484452,IHDR); // Build IDAT chunk var IDAT:ByteArray= new ByteArray(); for(var i:int=0;i < img.height;i++) { // no filter IDAT.writeByte(0); var p:uint; var j:int; if ( !img.transparent ) { for(j=0;j < img.width;j++) { p = img.getPixel(j,i); IDAT.writeUnsignedInt( uint(((p&0xFFFFFF) << 8)|0xFF)); } } else { for(j=0;j < img.width;j++) { p = img.getPixel32(j,i); IDAT.writeUnsignedInt( uint(((p&0xFFFFFF) << 8)| (p>>>24))); } } } IDAT.compress(); writeChunk(png,0x49444154,IDAT); // Build IEND chunk writeChunk(png,0x49454E44,null); // return PNG return png; } private static var crcTable:Array; private static var crcTableComputed:Boolean = false; private static function writeChunk(png:ByteArray, type:uint, data:ByteArray):void { if (!crcTableComputed) { crcTableComputed = true; crcTable = []; var c:uint; for (var n:uint = 0; n < 256; n++) { c = n; for (var k:uint = 0; k < 8; k++) { if (c & 1) { c = uint(uint(0xedb88320) ^ uint(c >>> 1)); } else { c = uint(c >>> 1); } } crcTable[n] = c; } } var len:uint = 0; if (data != null) { len = data.length; } png.writeUnsignedInt(len); var p:uint = png.position; png.writeUnsignedInt(type); if ( data != null ) { png.writeBytes(data); } var e:uint = png.position; png.position = p; c = 0xffffffff; for (var i:int = 0; i < (e-p); i++) { c = uint(crcTable[ (c ^ png.readUnsignedByte()) & uint(0xff)] ^ uint(c >>> 8)); } c = uint(c^uint(0xffffffff)); png.position = e; png.writeUnsignedInt(c); } } }
然后,在as3文件中调用,将图片转换成ByteArray:
package { import flash.events.Event; import flash.net.URLRequest; import flash.display.Loader; import flash.events.IOErrorEvent; import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; import flash.display.MovieClip; import flash.utils.ByteArray; //import mx.utils.Base64Decoder; public class main extends MovieClip { private var imgLoader:Loader= new Loader();; private var arr:Array; private var _bmd:BitmapData; public function main() { imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onIMGComplete); imgLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError); imgLoader.load(new URLRequest("1.jpg")); arr=[]; } private function onIMGComplete(evt:Event):void { var _bitmap:Bitmap=evt.target.content; _bmd=_bitmap.bitmapData.clone(); imgLoader.unload (); var bytes:ByteArray=PNGEncoder.encode(_bmd);//转化为二进制数据 } private function onError(evt:Event):void { trace('出错了!'); } } }
如果需要将ByteArray再转换成图片,代码如下:
package { import flash.events.Event; import flash.net.URLRequest; import flash.display.Loader; import flash.events.IOErrorEvent; import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; import flash.display.MovieClip; import flash.utils.ByteArray; public class main extends MovieClip { private var imgLoader:Loader= new Loader();; private var arr:Array; private var _bmd:BitmapData; public function main() { imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onIMGComplete); imgLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError); imgLoader.load(new URLRequest("1.jpg")); arr=[]; } private function onIMGComplete(evt:Event):void { var _bitmap:Bitmap=evt.target.content; _bmd=_bitmap.bitmapData.clone(); imgLoader.unload (); var bytes:ByteArray=PNGEncoder.encode(_bmd);//转化为二进制数据 trace(bytes[0]); var load:Loader=new Loader(); load.loadBytes(bytes);//读取ByteArray load.contentLoaderInfo.addEventListener(Event.COMPLETE, complete); } private function complete(event:Event):void { var bitMap:Bitmap=event.target.content as Bitmap;//读取Bitmap addChild(bitMap); } private function onError(evt:Event):void { trace('出错了!'); } } }
发表评论
-
as3中颜色矩阵滤镜ColorMatrixFilter的使用
2015-05-11 15:32 1242public static function chan ... -
AS3.0 关于用URLLoader加载外部图片
2015-04-02 17:09 968很多人都想当然的直接用URLLoader加载外部图片然后通 ... -
Flash AS3 让<鼠标点击>穿透上层透明区域,下层对象触发<鼠标点击>事件
2017-10-24 13:54 937问题描述:1. 在Stage上放置2个Sprite, A ... -
关于 AS3 Socket 通信基础(六)
2017-10-24 14:02 7236.处理使用Sockets时候引发的错误. 在程序 ... -
关于 AS3 Socket 通信基础(五)
2015-04-01 16:50 8395.与Socket服务器断开,或者当服务器想与你断开的时候发 ... -
关于 AS3 Socket 通信基础(四)
2015-04-01 16:50 7344.同Socket服务器进行 ... -
关于 AS3 Socket 通信基础(三)
2015-04-01 16:49 12433.从Socket服务器读数据 ... -
关于 AS3 Socket 通信基础(二)
2015-04-01 16:49 941对于Socket对象来说,通过 ... -
AS3 Socket 通信基础(一)
2015-04-01 16:48 1058我们先来搞清几个概念,这有助于我们更加了解网络通信! 1、 ... -
as3.0针对两个独立swf的通信有个专门的类-----LocalConnection
2015-01-16 17:43 1990as3.0针对两个独立swf的通信有个专门的类-----Lo ... -
检测FlashPlayer版本的代码
2014-12-22 14:17 775var versionString:String = Cap ... -
as3.0中复制mc影片剪辑的方法
2014-05-23 16:17 1025方法1——反射方法: var ClassRef:Class ... -
as3类库大全
2014-05-04 16:14 834类库大全地址: http://www.adrianparr ... -
AIR版截屏跟QQ截屏一样 (源码)
2014-04-14 16:54 934两个Demo,一个是Flex项目,另一个是ActionScri ... -
AS3将网址加入收藏夹
2014-01-20 14:22 1065AS3: ExternalInterface.call(& ... -
FLASH AS3 TextField 文本超链接控制示例(新闻列表)
2013-10-30 15:23 1080这两天想自行设计一个唐酷的AS3+XML新闻列表(http:/ ... -
AS3动态文本框支持单击事件
2013-10-30 15:21 1138AS3动态文本框支持单击事件 用TextEvent.LINK ... -
AS3 变灰的代码
2013-08-23 15:32 767var filter:Filter = new ColorMa ... -
AS3 String to Date
2013-08-12 15:57 1721var formatterString:String = &q ... -
greensock又出重量级产品 - LoaderMax
2013-05-27 11:30 12201、线性化下载过程 一般的下载队列,是一口气推入n个load ...
相关推荐
你可以使用Java的ImageIO类从文件、流或其他来源读取图像,或者创建一个新的空白图像。 2. 实例化PngEncoder对象,通常需要指定输出流,例如FileOutputStream,这将把编码后的PNG数据写入到指定的文件。 3. 调用...
要使用它,首先需要将其导入到项目中,然后创建PNGEncoder实例并调用`encode()`方法。 3. **使用示例**: ```actionscript import flash.display.BitmapData; import com.adobe.images.PNGEncoder; import ...
PNGEncoder类实现了将BitmapData对象的数据编码为PNG格式的字节流,以便可以将其发送到服务器或保存到本地。 2. **ClipBoard.as**: 这部分代码可能涉及到剪贴板操作,允许用户复制、粘贴图像。在AS中,可以使用...
1. **图像处理**:提供了`com.adobe.images`包,包含如JPEGEncoder和PNGEncoder类,可以方便地将位图数据转换为JPEG或PNG格式,这对于Web上的图像处理非常有用。 2. **JSON解析**:库中的`...
2. **读取和写入PNG图像**: 使用`ImageIO`类的`read()`和`write()`方法可以方便地读取和保存PNG图像。`read()`方法从输入流中读取图像,而`write()`方法将图像写入输出流,同时可以指定图像格式,如`ImageIO.write...
在入门篇中,你会看到如何使用这些工厂方法,以及如何自定义图表的标题、轴标签和数据系列。 数据系列是图表的主要组成部分,它们通常由`XYSeries`或`DefaultCategoryDataset`等类表示。你可以添加、删除和修改系列...
`flash.utils.ByteArray`类用于存储编码后的数据,然后可以使用`FileReference`类的`save()`方法将数据保存到用户的本地文件系统。 以下是实现这个功能的基本步骤: 1. 创建一个`Video`对象和一个`BitmapData`对象...
4. 转换为JPEG或PNG:截取的BitmapData可以通过`as3corelib`中的`com.adobe.images.PNGEncoder`或`com.adobe.images.JPEGEncoder`类编码为JPEG或PNG格式的字节数组。 5. 保存或发送:最后,可以将编码后的字节数组...
4. **Saving Images**:将BitmapData转换为图片文件(如JPEG或PNG)需要使用`JPEGEncoder`或`PNGEncoder`类。编码后的字节数组可以通过HTTP服务上传到服务器,或者使用FileReference类保存到本地。 5. **User ...
开发者可以通过阅读API文档,了解每个类的功能和使用方法,例如: - `ChartFactory`类:提供了创建各种图表的静态方法。 - `Axis`接口:定义了坐标轴的行为,如`CategoryAxis`和`ValueAxis`。 - `LegendItem`类:...
例如,可以使用`flash.system.Screen`类的`captureScreen()`方法捕获整个屏幕,然后使用`BitmapData.draw()`绘制用户选定的矩形部分。 接下来,我们可以使用`BitmapData`提供的各种图像处理方法对截图进行编辑。...
在进行格式转换时,我们可以使用Bitmap的Save方法,通过指定不同的编码器来改变输出格式。 下面是一个简单的C#代码示例,展示了如何将BMP转换为PNG: ```csharp using System; using System.Drawing; using System...
6. **保存图像**:使用Save()方法,将转换后的图像保存到指定路径,同时指定目标格式的编码器(如JPEGEncoder、PNGEncoder等)。 7. **释放资源**:确保每次处理完一个图片后都释放相关的资源,避免内存泄漏。 在...
通常我们会使用`PngEncoder`类来编码BitmapData对象为PNG格式的字节数组,然后再将其发送到服务器。以下是一段简单的示例代码: ```actionscript // displaObject 为需要截图对象 var pngEncoder:PngEncoder = new ...
Flex提供了Camera类来访问和控制用户的摄像头,我们可以用它的`getVideo`方法获取视频流,然后使用BitmapData的`draw`方法将每一帧绘制到位图上,最后进行保存。 3. **SaveChart-app.xml 和 SaveWebcam-app.xml** -...
### ArcGIS API for Silverlight地图保存为PDF和图片 #### 一、背景介绍 在地理信息系统(Geographic ...需要注意的是,虽然这里使用的是特定的技术栈(Silverlight),但类似的方法也可以应用于其他平台和技术栈中。
每次迭代时,使用Image类的FromFile方法加载图片,然后利用Save方法以新格式保存。例如,将JPG转换为PNG: ```csharp using System.Drawing; //... string[] imageFiles = Directory.GetFiles("inputFolder", "*....
- **生成二维码**:使用`com.github.stephenc.java-iso88591/png/jpg/PNGEncoder`类。 ```java QRCode qr = new QRCode(); qr.addData(content); qr.make(); PNGEncoder encoder = new PNGEncoder(qr....
6. **图片保存**:程序能够将流程图保存为图片,这可能涉及到将Flex的舞台内容转换为位图,然后利用BitmapData对象和PNGEncoder类将其编码为PNG格式的图像文件。 7. **调试与测试**:由于描述中提到在Flex3上已通过...
在Flex中,可以使用BitmapData的compress()方法,传入合适的压缩格式(如JPEGEncoder或PNGEncoder)和质量参数来实现压缩。 总的来说,"图片压缩flex demo"是一个使用Flex技术演示如何加载图片、压缩图片并保存压缩...