Flex 获得png透明截图的问题和解决方法

代码大概这样:


代码如下:

// displaObject 为需要截图对象
var pngEncoder:PngEncoder = new PngEncoder();
var bitMapData:BitmpaData = new BitmpaData(displaObject.widht,displaObject.height);
bitMapData.draw(displaObject);
var imageByteArray:ByteArray = pngEncoder.encode(bitMapData);
.....
send the imageByteArray to server side scripts .......

但是得到结果并不透明,于是怀疑encode方法没有包含Alpha通道。改为第二种方法:


代码如下:

var bytes:ByteArray = bitmapData.getPixels(new Rectangle(0,0,bitmapData.width,bitmapData.height));
var imageByteArray2:ByteArray = pngEncoder.encodeByteArray(bytes,bitmapData.width,bitmapData.height,true);

结果仍然没有透明度信息!
于是仔细读了手册每一项找到如下一段话:
transparent:Boolean (default = true) — 指定位图图像是否支持每个像素具有不同的透明度。默认值为 true(透明)。若要创建完全透明的位图,请将 transparent 参数的值设置为 true,将 fillColor 参数的值设置为 0x00000000(或设置为 0)。将 transparent 属性设置为 false 可以略微提升呈现性能。
也就是说,transparent = true 还不行,fillColor还必须设置为 0x000000!!


代码如下:

var bitMapData:BitmpaData = new BitmpaData(displaObject.widht,displaObject.height,true,0x000000);

其实这样设置挺说不通的,但是以后碰到问题还是要多看看手册了!

(0)

相关推荐

  • Flex 获得png透明截图的问题和解决方法

    代码大概这样: 复制代码 代码如下: // displaObject 为需要截图对象 var pngEncoder:PngEncoder = new PngEncoder(); var bitMapData:BitmpaData = new BitmpaData(displaObject.widht,displaObject.height); bitMapData.draw(displaObject); var imageByteArray:ByteArray = pngEncoder.enco

  • selenium+python截图不成功的解决方法

    selenium+python,使用webdriver的截图函数get_screenshot_as_file()截图,代码如下: from selenium import webdriver from time import sleep driver=webdriver.Chrome() driver.get("https://www.baidu.com") driver.find_element_by_id("kw").send_keys("seleni

  • flex 调试无法正常启动原因分析及解决方法

    1.问题描述 Flex无法调试的情况: 在调试Flex程序的时候,经常后遇到进度为57%无法调试的情况.对于Chrome浏览器,还会遇到 "Flash  Builder 找不到所需版本的 Abobe Flash Player ......"等情况,甚至还会出现下图所示情况: 找不到 Abobe Flash Player :C:\...\Chrome\Application\plugins\NPSWF32.dll 2.问题分析 Flex 无法正常调试,,通常是因为未安装适合版本的flas

  • flex不显示GIF图片问题的另类解决方法

    让Flex显示动态图片的确令人头痛,不过,我们可以用一些手段让其乖乖显示出来.如下: 1.先到http://code.google.com/p/as3gif/此处下载GIFPlayer0.4.zip ,将里面的org文件夹复制出来.并放到我们的要用到的工程的src文件夹下. 2.示例代码如下,可以参考着看,代码比较简单,就不解释了.

  • php缩放gif和png图透明背景变成黑色的解决方法

    工作中需要缩放一些gif图然后在去Imagecopymerge,可是发现使用了imagecreatetruecolor和imagecopyresampled后发现背景图不对,本来透明的背景图变成了黑色,后来发现做一些修改才可以: $img = imagecreatetruecolor(200, 200); //2.上色 $color=imagecolorallocate($img,255,255,255); //3.设置透明 imagecolortransparent($img,$color);

  • PHP基于ffmpeg实现转换视频,截图及生成缩略图的方法

    本文实例讲述了PHP基于ffmpeg实现转换视频,截图及生成缩略图的方法.分享给大家供大家参考,具体如下: 这里把ffmpeg 和  生成缩略图整合了一下: include("ImageResize.class.php") //转视频 $cmd="ffmpeg.exe -i starwar.avi -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 1.flv"; exec($cmd); //视频截图 $cmd="ffmpeg

  • C# WinForm控件对透明图片重叠时出现图片不透明的简单解决方法

    本文实例讲述了C# WinForm控件对透明图片重叠时出现图片不透明的简单解决方法.分享给大家供大家参考,具体如下: 在Winform中如果将一个透明图片放在窗体上能正常显示透明,但是如果将该图片放在另一个控件上会导致不能显示透明效果. 解决这种情况,可以采取在控件上使用GDI+绘画出透明图片. 这里我们就以一个pictureBox2控件上面重叠一张png透明图片为例: 我们只需要给pictureBox2控件添加Paint事件,然后对png透明图片进行绘制即可,代码如下: private voi

  • Android png透明图片转jpg时背景变黑的解决方法

    在做view保存图片后,压缩格式转为jpg的时候出现了黑色背景,其根本原因在于透明背景时背景的情况下,转换为jpg的时候会变成黑色背景,原因是PNG支持透明图而 JPG格式不支持透明背景. 我们的解决方案如下: /** * 把bitmap,png格式的图片 转换成jpg图片 * 因jpg不支持透明,如png透明图片,则转成白底! * @param bitmap 源图 * @param newFilepath 新图片的路径 */ public static void convertBitmap2J

  • Python如何截图保存的三种方法(小结)

    本文介绍python如何进行截图保存的几种方法,在测试过程中,是有必要截图,特别是遇到错误的时候进行截图.结合Python其它模块如time ,os.path,基本能满足截图保存文件的功能需求 第一种 selenium for python get_screenshot_as_file() 相关代码如下: # coding=utf-8 import time from selenium import webdriver driver = webdriver.Chrome() driver.max

  • Vue拖动截图功能的简单实现方法

    拖动鼠标进行页面截图(也可指定区域拖动截图) 一.安装html2canvas.vue-cropper npm i html2canvas --save //用于将指定区域转为图片 npm i vue-cropper -S //将图片进行裁剪 二.在main.js注册vue-cropper组件 import VueCropper from 'vue-cropper' Vue.use(VueCropper) 三.页面中引入html2canvas import html2canvas from "ht

随机推荐