加载PNG图片的处理方式
现在有很多加载在线图片的文章,这里小弟只是随手拈来,并提上两手
首先,用解码的方式来加载在线图片并生成image,这里有用到PNGDecoder,可以屋GooleCode里查找,下载。不过老实说,PNGDecoder这个解码是很差的,其中ALPHA的解码尤为糟糕,第一种就是利用它来加载后解码而出现勒类似马赛克的彩色效果;
1 <?xml version="1.0"?> 2 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> 3 <mx:Script> 4 <![CDATA[ 5 6 import mx.core.UIComponent; 7 import mx.core.BitmapAsset; 8 import flash.net.*; 9 import flash.display.*;10 import flash.utils.ByteArray;11 //导入BMPDecoder12 import com.adobe.image.PNGDecoder;13 private function showimage():void {14 loadPNGFile("../test.png");15 } 16 private function loadPNGFile( url:String ):void {17 var loader:URLLoader = new URLLoader();18 //指定loader以二进制返回数据19 loader.dataFormat = URLLoaderDataFormat.BINARY;20 loader.addEventListener( Event.COMPLETE, onCompleteLoad );21 loader.load( new URLRequest( url ) );22 }23 private function onCompleteLoad( e:Event ):void {24 var byte:ByteArray = e.target as ByteArray;25 _loader=new Loader();26 _loader.addEventListener(Event.COMPLETE,comHandler);27 _loader.loadbytes(byte);28 }29 private function comHandler(evt:Event):void{30 var loader:URLLoader = e.target as URLLoader;31 32 var decoder:PNGDecoder = new PNGDecoder();33 34 //将二进制数据转换成BitmapData35 36 var bd:BitmapData = decoder.decode( loader.data ); 37 //这时候能获取到loader.data为ByteArray,38 //若不加URLLoaderDataFormat.BINARY,39 //则获取到的肯能为TEXT类型40 41 //用来显示效果的Bitmap获取位图数据,图片平滑42 43 var myBitmap:Bitmap = new Bitmap(bd,"auto",true);44 myImage.source=myBitmap;45 }46 ]]>47 </mx:Script> 48 49 <mx:Button50 id="showImage" 51 label="showimage" 52 click="showimage();"/>53 54 <mx:Image id="myImage" /> 55 </mx:Application>
②
通过URLLoader加载后再用Loder加载,然后获取ByteArray,然后再进行BitmapData的转换,
最后,也可以通过Draw(),进行初始化
[code]<?xml version="1.0"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[
import mx.core.UIComponent;import mx.core.BitmapAsset;import flash.net.*;import flash.display.*;import flash.utils.ByteArray;//导入BMPDecoder import com.adobe.image.PNGDecoder;private function showimage():void { loadPNGFile("../test.png"); } private function loadPNGFile( url:String ):void {var loader:URLLoader = new URLLoader();//指定loader以二进制返回数据 loader.dataFormat = URLLoaderDataFormat.BINARY; loader.addEventListener( Event.COMPLETE, onCompleteLoad ); loader.load( new URLRequest( url ) ); }private function onCompleteLoad( e:Event ):void {var byte:ByteArray = e.target as ByteArray; _loader=new Loader(); _loader.addEventListener(Event.COMPLETE,comHandler); _loader.loadbytes(byte); }private var _loader:Loader;private function comHandler(evt:Event):void{ _loader= new Loader();var byte:ByteArray=evt.target as ByteArray;_loader.contentLoderInfo.addEventListener(evt.COMPLETE,comHandler);_loader.loadBytes(byte);}private function comHandler(evt:Event):void{//将二进制数据转换成BitmapData
var bitmapdata:BitmapData = new BitmapData(480,320,true,0); bitmapdata.draw(_loader,new Matrix(),null,null,null,true);//用来显示效果的Bitmap获取位图数据,图片平滑 //其实也可以直接省略Draw这部的 var myBitmap:Bitmap = new Bitmap(bitmapdata,"auto",true);myImage.source=myBitmap;//或者直接myImage.addChild(myBitmap)} ]]> </mx:Script>
<mx:Button id="showImage" label="showimage" click="showimage();"/>
其实两种实现方法的对比就会有答案了
<mx:Image id="myImage" /> </mx:Application>
转载于:https://my.oschina.net/u/263424/blog/633368
加载PNG图片的处理方式相关推荐
- Android加载GIF图片的两种方式
飞哥语录:得到一件东西最好的方式是让自己配得上它. 方式一:使用第三开源框架直接在布局文件中加载gif 1.在工程的build.gradle中添加如下 buildscript {repositorie ...
- c语言加载本地图片,Unity加载本地图片的2种方式
1. 使用 WWW 加载,详细查看 unity3d 官方文档. 2. 使用 System.IO 加载,lua 代码如下: local File = luanet.import_type("S ...
- JS实现图片懒加载的几种简单方式,图片懒加载
记得以前手机端有个业务时将用户上传的的图片在用户往上滑动手机的时候呈现,由于刚开始用户数量少就没留意,直接将后台的数据拉过来渲染,当时后台也没有分页,可是后来参与用户多了起来,跳转到这个页面就渲染个几 ...
- UIWebView如何加载本地图片
UIWebView如何加载本地图片 UIWebView加载本地图片是有实用价值的.比方说,有时候我们需要本地加载静态页来显示相关帮助信息,而这些帮助信息当中含有很多很多的富文本,用代码实现难度较大,这 ...
- 【Flutter】Image 组件 ( 加载网络图片 | 加载静态图片 | 加载本地图片 | path_provider 插件 )
文章目录 一.加载网络图片 二.加载静态图片 三.加载本地图片 四.完整代码示例 五.相关资源 一.加载网络图片 参考 [Flutter]Image 组件 ( Image 组件简介 | Image 构 ...
- thinkphp+ajax无刷新分页并加载显示图片
2019独角兽企业重金招聘Python工程师标准>>> 最近自己用thinkphp和bootstrap做一个小站点,在用到ajax与后台数据库交互实现无刷新分页时,因为我需要返回的数 ...
- Android手机内存图片读取,有效解决Android加载大图片内存溢出的问题
今天在交流群里,有人问我他经常遇到加载图片时内存溢出的问题,遇到的情况还是在自己的测试机或者手机里没有问题,做好了, 到了客户手机里就内存溢出了.其实有时候不同的手机和不同的系统对内存的要求不一样,尤 ...
- QML for Android 加载图片资源的几种方式
前言 前段时间用 QML 做一个简单的 android 程序,需要打开 android手机本地图片,原本是一个非常简单的功能,但是碰到一些坑着实的被坑了一把,然而在网上并没有找到相关的文档,这里做个总 ...
- 剖析Picasso加载压缩本地图片流程(解决Android 5.0部分机型无法加载本地图片的问题)
之前项目中使用Picasso遇到了一个问题:在Android 5.0以上版本的部分手机上使用Picasso加载本地图片会失败.为了解决这个问题,研究了一下Picasso加载和压缩本地图片的流程,才有了 ...
最新文章
- jQuery--AJAX传递xml
- python练习题-99乘法表
- ARP监控工具ARPalert
- Docker知识点总结及其命令的使用
- windows系统如何cmake_Windows操作系统如何快速增加分区?建议收藏
- afterclass_通过beforeClass和afterClass设置增强Spring Test Framework
- javascript学习系列(12):数组中的join方法
- VC 6中使用不同调用规范的函数在符号文件里的表示方式
- 山东省第八届 ACM 省赛 sum of power(SDUT 3899)
- 猜数字游戏python程序用函数guesssecret_Python-三、函数
- UI设计干货素材|网页设计巧妙使用背景纹理
- SAP License:企业如何做成本分析
- 仿照七牛云图片处理类实现的C#帮助类
- SQL注入漏洞(原理;网页注入)
- msm8953抓取audio kernel dsp log
- 基于连接跟踪机制的状态防火墙的设计与实现
- c语言编辑回文数,C语言实例 回文数
- dede采集简单好用的织梦采集
- 明华澳汉 sle_4442 卡 读写
- f和摄氏度怎么换算_华氏度和摄氏度的换算