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;

在线等 急急急急急

参考技术A silverlight中:
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

本回答被提问者采纳
第5个回答  2011-03-08 多个图片存储到一个.dat文件中比较麻烦,图片格式是否是统一的?

以上是关于wpf从数据库读取图片显示到image控件上去问题????????????????的主要内容,如果未能解决你的问题,请参考以下文章

C# wpf image 图片如何赋值到另一个image中

wpf image控件 设计时显示图片,运行时不显示

WPF的Image控件图片不能显示出来的问题探究

急等,在wpf中怎么才能把image控件的source属性绑定到listview中的选中项

WPF中啥控件能够既显示图片,又显示文字

c#wpf怎么设置image控件边框