关于TDBImage控件显示器Oracle9i数据库中的BLOB字段,如何才能显示原来的比例的问题(100分)

  • 主题发起人 主题发起人 xldjlbw
  • 开始时间 开始时间
X

xldjlbw

Unregistered / Unconfirmed
GUEST, unregistred user!
我在delphi7中调用Oracle数据库表的BLOB数据类型,利用TDBImage控件,进行显示已成功,但图片的比例却不能保持原来的样子,将strech:=true了,但如何能够保持图片原来的比例(不随TDBImage的宽度和高度变化)不失真呢,求高手指点。[:(]
 
楼上的,我现在用delphi7想把bmp或者jpg图片存取到oracle数据库中的BLOB字段中去,无法实现,我看到你的帖子上写的可以显示(可以取了),能否把你的思路告诉我一下,或者把主要代码贴一下,谢谢 !
 
第一种方法:
取得图片的长和宽,然后根据长宽比例动态调整DBImage的大小
第二种方法:
使用第三方控件
 
谢谢,能否说得更具体点。
使用oracle的存储过程可以将任意bmp图片,存储为oracle数据库的数据,以下是我在机子上做的试验:
SQL> CREATE TABLE IMAGE_LOB (
2 T_ID VARCHAR2 (5) NOT NULL,
3 T_IMAGE BLOB NOT NULL
4 );
表已创建。
SQL> desc image_lob
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
T_ID NOT NULL VARCHAR2(5)
T_IMAGE NOT NULL BLOB
SQL>CREATE OR REPLACE DIRECTORY IMAGES AS 'C:/Inetpub/wwwroot';
目录已创建。
SQL> CREATE OR REPLACE PROCEDURE IMG_INSERT (
2 TID VARCHAR2,
3 FILENAME VARCHAR2) AS
4 F_LOB BFILE;
5 B_LOB BLOB;BEGIN
6 INSERT INTO IMAGE_LOB (T_ID, T_IMAGE) VALUES (TID,
7 EMPTY_BLOB ()) RETURN T_IMAGE INTO B_LOB;
8 F_LOB:= BFILENAME ('IMAGES', FILENAME);
9 dbms_lob.FILEOPEN (F_LOB, dbms_lob.FILE_READONLY);
10 dbms_lob.LOADFROMFILE (B_LOB, F_LOB,
11 dbms_lob.GETLENGTH (F_LOB));
12 dbms_lob.FILECLOSE (F_LOB);
13 COMMIT;
14 END;
15 /
过程已创建。
SQL> BEGIN
2 IMG_INSERT('1','x9.gif');
3 end;
4 /
PL/SQL 过程已成功完成。
注意建立该过程必须要拥有dba权限的用户才行
 
后退
顶部