如何解决如何显示从sqlite到flex datagrid的图像
|| 我有一些缩略图图像(长度为8K ish),存储在sqlite数据库中,编码为base64字符串。 我想检索这些图像并将其呈现到一个数据网格中(以及来自数据库的其他一些信息) 从数据库中检索信息是可行的,但是我不能完全“看到”如何将来自数据库的解码结果连接到数据网格以显示图像。 下面是一些代码,在这里我展示(为简化起见)一个简单的DGrid,并希望使用dataprovider指向数据库中的选择 任何显示我需要如何更改此代码的细节将不胜感激:-) <mx:DataGrid id=\"dg2\" dataProvider=\"{dp2}\">
<mx:columns>
<mx:DataGridColumn headerText=\"Image\" dataField=\"image\" width=\"150\"/>
</mx:columns>
</mx:DataGrid>
生成dp2信息的代码如下。
结果2数组已按预期填充,而ldr似乎已填充,但是imageBMap和(因此)dp2为空。
sql2.text = \"SELECT image FROM bookMarks;\";
sql2.execute();
var result2:SQLResult = sql2.getResult();
var data2:Array = result2.data;
var base64Dec:Base64Decoder;
var byteArr:ByteArray;
var bmap:Bitmap;
var ldr:Loader = new Loader();
base64Dec = new Base64Decoder();
if(result2.data != null)
{
var numRows:int = result2.data.length;
for(var i:int = 0; i < numRows; i++)
{
for(var columnName:String in result2.data[i])
{
if(columnName == \"image\") // Normally there will be more than 1 column in the select,hence this check
{
base64Dec.decode(result2.data[i][columnName]);
byteArr = base64Dec.toByteArray();
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,loaderComplete);
ldr.loadBytes(byteArr);
}
}
}
}
var imageBMap:Bitmap = Bitmap(ldr.content);
dp2 = ArrayCollection(imageBMap);
}
private function loaderComplete(event:Event):void
{
var loaderInfo:LoaderInfo = LoaderInfo(event.target);
var bitmapData:BitmapData = new BitmapData(loaderInfo.width,loaderInfo.height,false,0xFFFFFF);
bitmapData.draw(loaderInfo.loader);
}
解决方法
您需要在itemRenderer中使用以显示图像:
<mx:DataGridColumn headerText=\"Image\" width=\"150\">
<mx:itemRenderer>
<fx:Component>
<s:Image source=\"{here you put the dataProvider}\">
</fx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。