转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件使用 >> 常用软件 >> 正文
Powerbuilder6.0图象处理技         

Powerbuilder6.0图象处理技

作者:闵涛 文章来源:闵涛的学习笔记 点击数:873 更新时间:2009/4/24 21:43:01
p align="justify">在Powerbuilder6.0程序中有时要用到BMP图象文件,比如人事系统中人员的相片、用扫描仪扫描进去的人事档案等等。但在Powerbuilder6.0中,没有直接的方法将BMP文件读入内存并显示或写入到数据库中。但Powerbuilder支持二进制文件的读写操作,可将BMP文件整个读入BLOB类型的变量中来实现,现在经下面两个例子来讲解

例子一、图象的显示

步骤如下:

1 取得位图文件名。

2 取得文件长度。

计算要用fileread函数读文件的次数(一次最多只能读32K数据)

3 打开文件

使用FOR循环将文件中的数据读入到BLOB变量中

4 建立一Picture控件

5 使用SetPicture函数显示BMP图象

现在编写程序代码

PowerBuilder要求每个应用程序的启动(Open)事件中具有一定代码,进入应用程序绘图器,在此例中我们为pic应用程序的Open事件中添加以下代码:

open(w_pic) //打开程序窗口

在W_pic窗体中建立一个“选择并显示位图”的按纽控件和建立P_1(Picture控件)

在“选择位图”的按纽控件的“open”事件中写入如下代码:

   /* 本 段 代 码 将 读 取 一 个 超 过327680字 节 的 文 件, 这 个代 码 可 以 用 以 读 取Text 文 本 和Bitmap 图 象。*/

(“//------ //*****” 中间为注解的内容)

String Ls_path,ls_file,ls_parms,ls_dir,ls_command

integer ls_num,ls_cs,i

integer fh, ret

blob is_pic_blob

blob{327680} ls_blob //必须指明ls_blob的大小

string defext = "BMP"

string Filter = "bitmap Files (*.bmp), *.bmp"

ulong nbr,ls_len

ret = GetFileOpenName("Open Bitmap", ls_path,ls_name, defext, filter) //选择获取打开的位图文件

IF ret = 1 THE /p>

ls_len=filelength(ls_path) //取得文件的字节长度

//------计算出读取文件的次数

ls_cs=ls_len/(32*1024)

if mod(ls_len,32)=0 then

else

ls_cs=ls_cs+1

end if

//*****

ls_num=FileOpen(ls_path,StreamMode!) //打开选取的文件

 

//------循环将文件中的数据读入到BLOB变量中

IF ls_num$#@60;$#@62; -1 THEN

nbr=1

for i=1 to ls_cs

fileread(ls_num,is_pic_blob)

nbr = BlobEdit(ls_blob,nbr,is_pic_blob)

next

//*****

 

p_1.SetPicture(ls_blob) //显示位图

FileClose(ls_num)

end if

END IF

 

在此例子的基础来实现怎么在程序中将照片存入数据库之中

     例子二、在程序中将照片存入数据库之中

    数据库进行写入和后台数据库有关:以SQLANYWAY为例:一般用 UPDATEBLOB 和 SELECTBLOB 两个SQL语句来实现。 在本例中我们只是简单地执行位图的存入与取出操作,所以程序窗口也比较简单。其功能是通过“位图入库”按纽来选择写入数据库的图象,写入数据库的图象可以通过点击一旁的便列表来显视。

首先在应用脚本中连数据库及运动运行窗口:

      SQLCA.DBMS =ProfileString("regedit.ini","INI","dbms"," ")
      sqlca.Database=ProfileString("regedit.ini","INI","database"," ")
      sqlca.userid= ProfileString ("regedit.ini", "INI", "userid", "")
      sqlca.dbpass= ProfileString ("regedit.ini", "INI", "dbpass", "")
      sqlca.logid = ProfileString ("regedit.ini", "INI", "logid", "")
      sqlca.logpass = ProfileString ("regedit.ini", "INI", "logpassword", "")
      sqlca.servername = ProfileString ("regedit.ini", "INI", "servername", "")
      SQLCA.DBParm =ProfileString("regedit.ini","INI","dbparm"," ")
      CONNECT USING sqlca ;
      open(w_pic)

在W_pic窗体中建立一个“位图入库”的按纽控件,数据窗口控件(用于选择显视的图片)和建立P_1(Picture控件)

在窗体W_pic的"OPEN"脚本中写入:

dw_1.settransobject(sqlca)
dw_1.retrieve()

在“位图入图”的按纽控件的“click"脚本中写入:

String Ls_path,ls_file,ls_parms,ls_dir,ls_command
integer ls_num,ls_cs,i
integer fh, ret
blob ls_blob
//-----选取图片进个BLOB类型的变量,这里读取的图片不大于32K
string defext = "BMP"
string Filter = "bitmap Files (*.bmp), *.bmp"
ulong nbr,ls_len,nbr1

ret = GetFileOpenName("Open Bitmap", ls_path,ls_file, defext, filter)
IF ret = 1 THEN
ls_num=FileOpen(ls_path,StreamMode!)
IF ls_num$#@60;$#@62; -1 THEN
   fileread(ls_num,ls_blob)
    FileClose(ls_num)
end if
END IF

//*******

//取得序列号
SELECT num
INTO :i
FROM number
where no=1
using sqlca;

//新增一条记录
INSERT INTO pic
( no )
VALUES ( :i ) using sqlca ;


//图片写入数据库
UPDATEBLOB pic
SET pics=:ls_blob
WHERE no=:i
using sqlca;
i=i+1


update number
set num=:i
where no=1
using sqlca;
dw_1.retrieve()
在“数据窗口DW_1”的按纽控件的“doubleclick"脚本中写入(实现显示双击选中的图片):

blob ls_blob
int i
i=int(this.getrow())
if i$#@62;0 then
messagebox("","fffff")
SELECTblob pics
INTO :ls_blob
FROM pic where no=:i using sqlca ;
messagebox(string(sqlca.sqlcode),string(len(ls_blob)))
p_1.SetPicture(ls_blob)
end if

以上两个例子的源程序可在这里下载。


[办公软件]在sybase中插入图片、PDF、文本文件  [办公软件]安装Sybase ASE
[办公软件]linux指令大全(完整篇)  [办公软件]Linux新手入门常用命令大全
[办公软件]在RedHat Linux 9里安装gaim0.80  [办公软件]浅谈Linux 下Java 1.5 汉字方块问题解决方法
[办公软件]Linux程序员必读:中文化与GB18030标准  [办公软件]linux指令大全
[办公软件]制作Linux启动盘的四种方法  [办公软件]Linux文件系统的反删除方法
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · 办公软件  · 系统软件
    · 常用软件  · 聊天工具
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台