String ls_path, ls_file_name, ls_filter, ls_err
Int li_ret, li_loop, li_i, li_file, li_bytes
Long ll_file_len
Blob lb_file, lb_read, lb_pic

// 选择图片文件
ls_filter = "jpg File (*.jpg),*.jpg,bmp file(*.bmp),*.bmp,gif file(*.gif),*.gif"
li_ret = GetFileOpenName("选择头像", ls_path, ls_file_name, "png", ls_filter)
If Isnull(li_ret) Or li_ret < 0 Then
    Messagebox("提示", "打开文件错误!")
    Return
End If

// 读取文件二进制数据
ll_file_len = FileLength(ls_path)
// 5KB
If ll_file_len > 5120 Then
    Messagebox("提示", "文件大小不能超过5KB!")
    Return
End If
// FileRead每次最多读取32765bytes
If ll_file_len > 32765 Then
    li_loop = (ll_file_len / 32755) + 1
Else
    li_loop = 1
End If
    
li_file = FileOpen(ls_path, StreamMode!, Read!, LockRead!)
For li_i = 1 To li_loop
    li_bytes = FileRead(li_file, lb_read)
    If Isnull(li_bytes) Then
        Messagebox("提示", "读取文件错误!")
        Return
    End If
    If li_bytes > 0 Then
        lb_file = lb_file + lb_read
    End If
Next
FileClose(li_file)

// 设置图片
p_avatar.setpicture(lb_file)

// 保存图片
li_i = 0
SELECT COUNT(*) INTO :li_i FROM T_SYS_USER_INFO WHERE USER_GH = :gs_operid;
If li_i > 0 Then
    UPDATEBLOB T_USER SET AVATAR_PIC = :lb_file WHERE USER_GH = :gs_operid;
    If Sqlca.Sqlcode <> 0 Then
        ls_err =  Sqlca.Sqlerrtext
        ROLLBACK;
        Messagebox("提示", "头像保存失败:" + ls_err)
        Return
    End If
    ls_file_name = gs_operid + '_' + String(pub_fc_getdate(), "yyyy-mm-dd")
    UPDATE T_USER SET AVATAR_NAME = :ls_file_name WHERE USER_GH = :gs_operid;
    If Sqlca.Sqlcode <> 0 Then
        ls_err =  Sqlca.Sqlerrtext
        ROLLBACK;
        Messagebox("提示", "头像名称保存失败:" + ls_err)
        Return
    End If
End If
COMMIT;
// 从数据库读取图片
li_i = 0
SELECT COUNT(*) INTO :li_i FROM T_SYS_USER_INFO WHERE USER_GH = :gs_operid;
If li_i > 0 Then
    SELECTBLOB AVATAR_PIC INTO :lb_pic FROM T_USER WHERE USER_GH = :gs_operid;
    p_1.setpicture(lb_pic)
End If

// 图片较小 sqlserver 可用 varbinary(字段长度)类型来保存

PowerBuilder -- 保存图片的更多相关文章

  1. PowerBuilder笔记

    powerbuilder中怎样新建一个pbl文件 在创建pbw之后,右键单击pbw,点新建,弹出对话矿,按图操作,就能创建pbl 主程序入口: 主程序入口代码: // Profile ahzbmysq ...

  2. HTML 保存图片到本地

    具体方法有两种  一种是 利用canvas的 toDataUrl  和Html5 里面的 <a>标签里面的 Download 属性 虽然 Download 的兼容性不怎么样  但是在文章后 ...

  3. Android 保存图片到SQLite

    [转:原文] Resources res = getResources(); Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.ico ...

  4. PowerBuilder 简介及应用 - 数据库系统原理

    PowerBuilder 是一种企业级数据库前端应用和多层体系结构开发工具,友好的用户界面,功能强大的数据窗口,是一个集成开发环境. PB 的特点 采用面向对象的编程方法和事件驱动的工作原理. 支持跨 ...

  5. JS/HTML 保存图片到本地:HTML <a> download 属性

    JS如何保存图片到本地呢?自己百度一下吧! 这里想要说的是,可以利用 HTML 的 <a> 标签 来是实现保存图片到本地的功能,参考代码如下: <a href="http: ...

  6. [Android Pro] Android保存图片到系统图库

    http://stormzhang.github.io/android/2014/07/24/android-save-image-to-gallery/ http://blog.csdn.net/x ...

  7. IOS UIImagePickerController 保存图片到 相册

    // 异步下载图片 dispatch_queue_t queue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0); disp ...

  8. 利用PBFunc在Powerbuilder中解析Json对象

    利用PBFunc工具在Powerbuilder解析json,只需要调用getattribute方法来获取 解析unicode格式的json: n_pbfunc_json lnv_json lnv_js ...

  9. 利用PBfunc在Powerbuilder中使用https获取微信的AccessToken

    在前篇中讲解了使用PBFunc在Powerbuilder自己进行http的GET和POST操作. 本篇简单用代码演示下https的微信AccessToken的获取: n_pbfunc_http lnv ...

随机推荐

  1. Windows消息钩取

    @author: dlive @date: 2016/12/19 0x01 SetWindowsHookEx() HHOOK SetWindowsHookEx( int idHook, //hook ...

  2. 桶排序Bucket sort(转)

    补充说明三点 1,桶排序是稳定的 2,桶排序是常见排序里最快的一种,比快排还要快…大多数情况下 3,桶排序非常快,但是同时也非常耗空间,基本上是最耗空间的一种排序算法 我自己的理解哈,可能与网上说的有 ...

  3. 《手把手教你学C语言》学习笔记(7)---程序的输入与输出

    程序设计中,为了观察程序的运行状态和结构,需要输出指定的内容:为了让程序能够更加灵活,可以根据需求输入内容,让计算机处理和运行:所以程序的输入输出就显的尤为重要.主要包括printf和scanf函数. ...

  4. g++的编译选项:-Wl,-rpath=【转】

    转自:http://blog.csdn.net/russule/article/details/7057398 动态链接库 1 生成hello.so g++ -shared hello.cpp -ol ...

  5. Virtualbox 设置虚拟机上网并和主机互通(如ping等)

    我的主机是Ubuntu12.04, 安装virtualbox虚拟了一个xp系统.把xp作为一个开发用的机器,需要上网,并且和主机以及虚拟机之间互相访问. 1. 在virtual设置界面,将xp系统的网 ...

  6. hdu 4497(排列组合+LCM和GCD)

    GCD and LCM Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total ...

  7. java 修改字体大小

    在Windows->Preferences->General->Appearance->Colors and Fonts->Java->Java Editor Te ...

  8. python 集合互相转换

    #-*-coding:utf-8-*- #1.字典 dict = {'name': 'Zara', 'age': 7, 'class': 'First'} #字典转为字符串,返回:<type ' ...

  9. PHP计算两个时间的年数、月数以及天数

    如何获取两个不同时间相差几年几月几日呢?比如当前时间距离2008年08月08日的北京奥运会有几年几月几日了?需要说明的是:1.定义一年为360天,一个月为30天:2.代码中86400=24*60*60 ...

  10. hdu1862

    //开始把student stu[100000]放置在main()中导致栈溢出,所以必须放在全局位置, //可以调用数组的排序函数sort,包含头文件#include<algorithm> ...