高人救命...错误提示"jpeg error #41" 这是因为2.Jpg的这个文件已经损坏,不符合Jpeg的格式。请用其他软件看图,是否正确。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 直接这样做不就可以了TBolbField(table1.FieldByName('pic')).LoadFromFile('c:\2.jpg'); 有可能是你的CPU超频了。试试把它调回来怎样。我以前也碰到过这样的现像。 jpeg存入数据库的时候不能用loadfromfile 必须用数据流录入procedure TFORM1.SpeedButton2Click(Sender: TObject); //按钮专门录入图片Var MyJpg:TjpegImage; MyMs :TMemoryStream; MyFs :TFileStream; MyBmp:TBitmap; S:String;begin MyJpg:=TJpegImage.Create; MyMs:=TMemoryStream.Create; If OpenPictureDialog1.Execute Then Begin S:=OpenPictureDialog1.FileName; S:=ExtractFileExt(S); S:=AnsiUpperCase(S); If S='.BMP' Then Begin //把 BMP 图转换为 JPG 图 MyBmp:=TBitmap.Create; MyFs :=TFileStream.Create(OpenPictureDialog1.FileName,fmOpenRead); MyFs.Seek(soFromBeginning,0); MyBmp.LoadFromStream(MyFs); MyJpg.Assign(MyBmp); MyJpg.Compress; MyBmp.Free; MyFs.Free; End Else Begin MyJpg.LoadFromFile(OpenPictureDialog1.FileName); End; MyJpg.SaveToStream(MyMs); MyMs.Seek(0,0); TABLE1.Edit; //存入数据表的PHOTO字段 TABLE1photo.LoadFromStream(MyMs); TABLE1.Post; End; MyJpg.free; MyMs.Free;end;//打开图片procedure TFORM1.DATASOUSE1DataChange(Sender: TObject; Field: TField);Var MyMs : TMemoryStream; Myjpg : TJpegImage;begin MyMs:=TMemoryStream.Create; Myjpg:=Tjpegimage.Create; If Not TABLE1photo.isNull Then Begin TABLE1photo.SaveToStream(MyMs); MyMs.Seek(0,0); Myjpg.LoadFromStream(MyMs); Image1.Picture.Assign(Myjpg); //使用IMAGE而不是DBIMAGE End Else Begin Image1.Picture.Assign(Nil); End; MyMs.Free; Myjpg.Free;end;//上面这些是以前回答问题的答案 为什么不能用LoadFromFile,给个理由。我以前一直这么用的,没人说我程序不对。 Musicwind();-) :文件没有损坏,用ACDSEE可以看. tong_jin(YG) :还是不行.我该怎么办. LoadFromFile只能用于bmp文件 ,如果是jpg文件 程序汇报错的用上面的代码应该可以的啊? 如果不行,是存不进去,还是什么? 多谢指点。如果uses Jpeg;那么会不会报错? 本人使用的是DELPHI5.0和ACCESS2000,操作系统WIN2000.我将DELPHI重新安装,还是不行.救救我吧! 我刚才试过了,用TGraphicField可以直接LoadFromFile,我在试试TBlobField。 TBlobField也可以就是TBolbField(table1.FieldByName('pic')).LoadFromFile('c:\2.jpg'); 不过一开始需要uses一下jpeg. to chechy(chechy): 为什么不能用LoadFromFile,给个理由。我以前一直这么用的,没人说我程序不对。 ===============================================================TJPEGImage.LoadFromStream()可以装.jpg,但TJPEGImage.LoadFromFile()不能装.jpg,但可以装.bmp,原因是: LoadFromFile()方法属于上一级TGraphics,不属于TJPEGImage,下面的邦助标题就可以看出.就是说TJPEGIMage并没有对LoadFromFile进行改造或派生,所以不能装.jpg.下面是邦助中的'方法'标题.In TJPEGImage Assign Compress Create Destroy DIBNeeded JPEGNeeded LoadFromClipboardFormat LoadFromStream // 派生了,可以装.jpg SaveToClipboardFormat SaveToStreamDerived from TGraphic LoadFromFile // 没有被派生(Derive) SaveToFile 但是事实上,我刚才用TBlobField和TGraphicField的LoadFromFile成功的装入了JPEG文件。这怎么解释呢?难道我这里的环境特殊? 这更不奇怪!TBlobField是存放大块数据用的,什么格式的东西都可放进去,.jpg当然也可以和LoadFromFile了,与TJPEGIMage没有联系;TGraphicsField是从TBlobField派生的,TBlobField可以LoadFromFile('.jpg'),TGraphicsField也就可以 那么装进去不就行了吗?我只是觉得TBlobField.LoadFromFile为什么不能使用?因为以前自己一直都在这么用。至于显示,呵呵我也是用stream的。从Field中的Stream导出,这总比SaveToFile,在LoadFromFile要快。 TJPEGIMage.LoadFromFile('test.jpg');肯定不行!TBlobField.LoadFromFile('test.jpg') 难道也不能用?!这两种情况不一样 前面的tong_jin(YG)不是说不行吗?我以为他说的是真的。TBlobField.LoadFromFile('test.jpg') 一定可以。TJPEGIMage.LoadFromFile('test.jpg');我没试过,不敢乱说。TImage.Picture.LoadFromFile('test.jpg')也一定可以。 TJPEGIMage.LoadFromFile('test.jpg')肯定不行,因为它没有派生LoadFromFile 我错了.TBlobField.LoadFromFile('test.jpg');TBlobField.LoadFromFile('test.bmp');我试了一下都是可以的; 我想可能是遇上DELPHI的BUG了。多谢大家关心。 开发FLASH播放器 权限系统的设计 ---来源二十一世纪IT培训教材www.21centuryit.com 获取Mp3文件的演唱者的问题 Delphi面向对象编程思想 初学delphi,问题比较菜,分也不多,但好拿,请吃惯了鲍鱼的各位大侠们偶尔也尝尝山野菜吧!! 做游戏是不是比一般的编程要难很多? 程序运行速度问题 关于ADO提交数据时的问题,请解答 控件DBNavigator的问题? 关于三层数据库问题? 谁有DELPHI?请进来帮个忙 怎样屏蔽Excel文件修改后存盘时的修改确认提示框(用Delphi进行Excel文件操作)
必须用数据流录入
procedure TFORM1.SpeedButton2Click(Sender: TObject); //按钮专门录入图片
Var MyJpg:TjpegImage;
MyMs :TMemoryStream;
MyFs :TFileStream;
MyBmp:TBitmap;
S:String;
begin
MyJpg:=TJpegImage.Create;
MyMs:=TMemoryStream.Create;
If OpenPictureDialog1.Execute Then
Begin
S:=OpenPictureDialog1.FileName;
S:=ExtractFileExt(S);
S:=AnsiUpperCase(S);
If S='.BMP' Then
Begin //把 BMP 图转换为 JPG 图
MyBmp:=TBitmap.Create;
MyFs :=TFileStream.Create(OpenPictureDialog1.FileName,fmOpenRead);
MyFs.Seek(soFromBeginning,0);
MyBmp.LoadFromStream(MyFs);
MyJpg.Assign(MyBmp);
MyJpg.Compress;
MyBmp.Free;
MyFs.Free;
End
Else
Begin
MyJpg.LoadFromFile(OpenPictureDialog1.FileName);
End; MyJpg.SaveToStream(MyMs);
MyMs.Seek(0,0); TABLE1.Edit; //存入数据表的PHOTO字段
TABLE1photo.LoadFromStream(MyMs);
TABLE1.Post;
End;
MyJpg.free;
MyMs.Free;
end;//打开图片
procedure TFORM1.DATASOUSE1DataChange(Sender: TObject; Field: TField);
Var MyMs : TMemoryStream;
Myjpg : TJpegImage;
begin
MyMs:=TMemoryStream.Create;
Myjpg:=Tjpegimage.Create;
If Not TABLE1photo.isNull Then
Begin
TABLE1photo.SaveToStream(MyMs);
MyMs.Seek(0,0);
Myjpg.LoadFromStream(MyMs);
Image1.Picture.Assign(Myjpg); //使用IMAGE而不是DBIMAGE
End
Else
Begin
Image1.Picture.Assign(Nil);
End;
MyMs.Free;
Myjpg.Free;
end;
//上面这些是以前回答问题的答案
我以前一直这么用的,没人说我程序不对。
TBolbField(table1.FieldByName('pic')).LoadFromFile('c:\2.jpg');
不过一开始需要uses一下jpeg.
为什么不能用LoadFromFile,给个理由。我以前一直这么用的,没人说我程序不对。
===============================================================
TJPEGImage.LoadFromStream()可以装.jpg,但TJPEGImage.LoadFromFile()不能装.jpg,
但可以装.bmp,原因是: LoadFromFile()方法属于上一级TGraphics,不属于
TJPEGImage,下面的邦助标题就可以看出.就是说TJPEGIMage并没有对LoadFromFile进行改
造或派生,所以不能装.jpg.下面是邦助中的'方法'标题.In TJPEGImage
Assign
Compress
Create
Destroy
DIBNeeded
JPEGNeeded
LoadFromClipboardFormat
LoadFromStream // 派生了,可以装.jpg
SaveToClipboardFormat
SaveToStream
Derived from TGraphic
LoadFromFile // 没有被派生(Derive)
SaveToFile
这怎么解释呢?难道我这里的环境特殊?
TBlobField是存放大块数据用的,什么格式的东西都可放进去,.jpg当然也可以和LoadFromFile了,与TJPEGIMage没有联系;
TGraphicsField是从TBlobField派生的,TBlobField可以LoadFromFile('.jpg'),TGraphicsField也就可以
至于显示,呵呵我也是用stream的。从Field中的Stream导出,这总比SaveToFile,在LoadFromFile要快。
TBlobField.LoadFromFile('test.jpg') 一定可以。
TJPEGIMage.LoadFromFile('test.jpg');我没试过,不敢乱说。
TImage.Picture.LoadFromFile('test.jpg')也一定可以。
TBlobField.LoadFromFile('test.jpg');TBlobField.LoadFromFile('test.bmp');
我试了一下都是可以的;