wpf从数据库读取图片显示到image控件上去问题????????????????
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpf从数据库读取图片显示到image控件上去问题????????????????相关的知识,希望对你有一定的参考价值。
byte[] img = mod.GeneratelicenseUrl.ToArray();//这里img都有数值了
MemoryStream mestream = new MemoryStream(img);
BitmapImage image = new BitmapImage();
image.BeginInit();//执行到此就报错 显示(未找到适用于完成此操作的图像处理组)件。
image.StreamSource = mestream;
image.EndInit();
aqxk.Source = image;
aqxk.Height = image.Height;
aqxk.Width = image.Width;
在线等 急急急急急
BitmapImage image = new BitmapImage();
image.SetSource(new MemoryStream(img));
aqxk.Source =image
wpf中你测试一下看看.追问
wpf中没有SetSource方法 点不出来
delphi 中如何将图片数据保存到dat文件里的,然后读取出来,并在Image控件中显示。
参考技术A 先定义好图片的一个类型TImageType = record
ImageName : string;
width : integer;
height : integer;
ImageData : array[0..49,0..49] of byte;
end;
存图片:
procedure TForm1.SaveImage(path: string);
var
bit : TBitmap;
i,j : integer;
myImage : array[0..999] of TImageType;
FN : string;
dat : TFileStream;
begin
bit := TBitmap.Create;
bit.LoadFromFile(path);
myImage[0].ImageName := 'test';
myImage[0].width := bit.Width;
myImage[0].height := bit.Height;
for i := 0 to bit.Width - 1 do
begin
for j:= 0 to bit.Height - 1 do
begin
myImage[0].ImageData[i,j] := bit.Canvas.Pixels[i,j];
end;
end;
FN := 'C:/test.dat';
dat := TFileStream.Create(FN,fmOpenWrite);
dat.Write(myImage,sizeof(myImage));
dat.Free;
end;
读图片
procedure TForm1.LoadImagefromDat(path: string;image :Timage);
var
dat : TFileStream;
myImage : array [0..999] of TImageType;
i,j : integer;
begin
dat := TFileStream.Create(path,fmOpenRead);
dat.Read(myImage,sizeof(myImage));
dat.Free;
for i := 0 to myimage[0].width - 1 do
begin
for j:= 0 to myImage[0].height - 1 do
begin
image.Canvas.Pixels[i,j] := myImage[0].imagedata[i,j];
end;
end;
end;
未经测试,大致流程应该差不多了追问
谢谢你的答案,但程序在运行时提示出错,stack overflow
追答是栈溢出了,
myImage : array [0..999] of TImageType;
改成 myImage : array [0..999] of PImageType;
只申明指针试下
用时再分配内存 getmem(myimage[0],sizeof(Timagetype))给指针赋值
我写入的图片是很大的,有1024*768这么大,这样的写入方法会很慢,有没有更快一点的方法。
追答写入都是逐点写入了,没什么更快的了,或你可以调整小点分辨率,每2到3个点录一个,只是清淅度低点
参考技术B savetofile可以保存成文件,保存时文件名改成DAT就可以相反的
loadfromfile可以从文件中加载图像追问
savetofile可以保存成Dat文件,但读取就不可以了,而且我是想把大量的图片保存在一个DAT文件里,并读取出来,Image控件中显示
追答只保存到一个文件的话,只能用数据库,鉴于你只要一个文件的话,也不要太复杂的数据库,用ACCESS就可以了,把图片用二进制方式存入数据库就可以了
参考技术C 面版的添加删除,点添加删除windows组件,在对话框里其他的勾去掉,勾选windows media player点下一步安装.试试看windows组件不要删,否则会出很多问题.追问
我刚刚测试了一下,把array[0..999] of TImageType;改为array[0..255] of TImageType就没事了,但我写入的图片是很大的,有1024*768这么大,这样的写入方法会很慢,有没有更快一点的方法。
参考技术D //以下代码适合TBitmap类型//保存
procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Picture.Bitmap.SaveToFile(aFile);
end;
//加载
procedure TForm1.BitBtn1Click(Sender: TObject);
var
aStream: TMemoryStream;
begin
aStream := TMemoryStream.Create;
aStream.Position := 0;
aStream.LoadFromFile(aFile);
Image2.Picture.Bitmap.LoadFromStream(aStream);
aStream.Free;end;追问
这样只可以存取一张图片,我需要存取大量的图片。只用一个DAT文件存取。
追答针对你的题目,已经在空间中发表一篇解决方法,请看:
http://hi.baidu.com/yueyun889/blog/item/7851b31e44773c0b403417f0.html
以上是关于wpf从数据库读取图片显示到image控件上去问题????????????????的主要内容,如果未能解决你的问题,请参考以下文章