由于标题已经说明我在Flex 4应用程序中导入PNG时遇到了(大)问题。
在Photoshop中创建一个透明背景的PNG文件。 使用以下代码加载Flex应用程序:
thumbnailRef.load();
thumbnailRef是基于这种方式定义的标记:
<net:FileReference id="thumbnailRef"
select="onBrowseThumbnailRef_select(event);"
complete="onBrowseThumbnailRef_complete(event);" />
因此,当complete事件触发时,数据已加载,并且可以将加载的数据分配给名为Thumbnail的图像组件:
private function onBrowseThumbnailRef_complete(evt:Event):void {
Thumbnail.source = thumbnailRef.data;
}
Unitls现在一切正常! 但是当我尝试将缩略图组件的数据发送到WCF服务时,我会收到一张白色背景的照片:
var thumbBitmapData :BitmapData =
ImageSnapshot.captureBitmapData(Thumbnail.content);
//this is send to the WCF service
ThumbnailByteArray = new PNGEncoder().encode(thumbBitmapData );
我做错了吗?
答案 0 :(得分:0)
使用captureBitmapData时,它将捕获组件,但不仅仅是位图。我认为你有缩略图组件的白色背景。如果您想上传图片,可以尝试上传文件参考。
答案 1 :(得分:0)
@Jason: 说实话,我确实玩过thumbnailRef.data。为了控制正在发生的事情,我将Flex应用程序转换为AIR(桌面)应用程序并附加了这个:
Thumbnail.source = thumbnailRef.data;
//reset read pointer
thumbnailRef.data.position = 0;
var fl:File = File.desktopDirectory.resolvePath("test.png");
var fs:FileStream=new FileStream();
fs.open(fl,FileMode.WRITE);
fs.writeBytes(thumbnailRef.data);
fs.close();
在桌面上打开test.png文件会显示白色背景!据我所知,我所做的是:加载原始数据(位于thumbnailRef.data中)并将此数据再次保存到文件系统。
如果正确解释这意味着通过加载数据产生“错误”,但我没有任何线索如何拦截加载或自己控制它(或者我应该自己加载数据......如果是的如何?)。
奇怪的事情......