一个oracle数据库中某个表中有个字段类型为long,其中存放的为image图片格式为bmp;一个用pb编写的成品程序读写没有任何问题;可是我用delphi6读出的该字段显示的时候不正常,出现有规律的条纹;
报表用quickreport,图片用qrdbimage显示;
用dbimage也不可以。
报表用quickreport,图片用qrdbimage显示;
用dbimage也不可以。
解决方案 »
- Tfilestream导出excel,版本太低了.
- 关于delphi与PLC通讯的问题
- 哪位高手用过ExpressPrinting System Suite?
- datetostr(2004/02/29)为什么得出的结果却是1900-2-2 ?
- 如何实现dbgrid里面整条记录的复制???和剪切呢???
- 请问怎样复制(各种类型的)文件?
- 菜鸟问题,开方如何表示?
- 请教ShellListView中文件打开的问题?
- 请问谁有installshield的东方语言包:IS622EastPack 的安装注册码?
- 线程的同步问题,很着急,在想等待
- 求教:如何用delphi发现局域网上所有的主机并列出其主机名??求教原代码!!
- 求一个在文本框中只能输入货币的字符过滤函数!!
LONG型是文字data。
严重同意。HH
delphi中能转换吗。
急用。大家帮帮忙。
pb(配套软件用pb编写)中导出的照片很正常;
CODE VARCHAR2(10) NOT NULL,
NAME VARCHAR2(50),
POSTER BLOB ←定義例子
)
BLOB型:最大size為4G
如果blob里面放的是jpg,那把blob读出后,用TJPEGImage load后,赋值给Image.picture.bitmap,就可以显示,如果blob里面存放的是bmp 那么需要用TBitmap load后才能在Image里面显示,不过,一般数据库都存jpg格式的,否则bmp太大了,也许有GIF的,但是GIF我没有用过
麻烦大家帮忙。
不过反正是oracle,小型机,sun服务器,问题不会太大。而且数据稳定在2万左右。
我现在了解到可能就是数据流的问题,因为我把一个正常的图片用流的方式存入数据库中,读出来的仍然是有问题的。不解。程序如下:
var fs:tfilestream;
begin
fs:=tfilestream.Create('c:\145.bmp',fmopenread);
try
adodataset1.Append;
tblobfield(adodataset1.FieldByName('blobdata')).LoadFromStream(fs);
adodataset1.FieldByName('xh').AsString:='1234567';
adodataset1.fieldbyname('idx').asstring:='0';
adodataset1.Post;
except
end;
end;
可是还是没有解决;
我自己建立了一个blob的字段,对它的读写没有任何问题。我觉得是不是因为字段是long的原因呢〉?如果是这个样子的话,如何转化呢?多谢支持!
转化为bmp的试试
来我的网站下http://wwdn.kmip.net
msn:[email protected]
long里面存放的就是bmp格式文件,头部为bm。
用BLOB吧!
而且图片文件最好用JPG格式,否则太大了 !
对于lob字段而言,个人认为其使用比long类型有很大的灵活性,而且lob字段可以保存各类的数据,可以保存图片,大量的文字,现就clob跟blob两种类型加以说明,其中blob保存图片信息,clob保存大量文字。
exmple 6.
Create table test_table
(c_no number(1) not null,
c_blob blob,
c_clob clob,
constraint pk_test_table primary key (c_no)); unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DBCtrls, Grids, DBGrids, DB, DBTables, ExtDlgs; type
TForm1 = class(TForm)
Database1: TDatabase; //用于连接数据库
Table1: TTable; //获取表信息
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBMemo1: TDBMemo; //显示c_clob字段内容
DBImage1: TDBImage; //显示c_blob字段内容
Button1: TButton; //插入按钮
Button2: TButton; //保存按钮
Table1C_NO: TFloatField; //Tfiled
Table1C_BLOB: TBlobField;
Table1C_CLOB: TMemoField;
OpenPictureDialog1: TOpenPictureDialog; //从文件获取图片
OpenDialog1: TOpenDialog; //从文件获取文字
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject);
begin //插入操作
with Table1 do
begin
Insert; //将表状态置为插入状态
if OpenPictureDialog1.Execute then //获得图片信息
Table1C_BLOB.LoadFromFile(OpenPictureDialog1.FileName);
if OpenDialog1.Execute then //获得文字信息
Table1C_CLOB.LoadFromFile(OpenDialog1.FileName);
end;
end; procedure TForm1.Button2Click(Sender: TObject);
begin //提交插入内容
try
Table1.Post;
except
Application.MessageBox('错误发生','警告',0);
end;
end; end. 注意:
openpiceturedilog只能打开dmp,ico,wmf等文件,事先需要将图片文件格式保存成这几类;
在文字字段不从文件获得时,可以手动输入
本例只是对lob字段的一个小小的探索,用法不当及需改正之处,还请多多指教。 注:本篇文章大部分例子均取自论坛,如有侵犯您的版权,请来信告知,我们会做相应处理。
注意:
openpiceturedilog只能打开dmp,ico,wmf等文件,事先需要将图片文件格式保存成这几类;
在文字字段不从文件获得时,可以手动输入
http://211.99.196.144:8090/forum1/frontshow/dispbbs.jsp?boardid=106&id=5355