问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在VB中保存图片

发布网友 发布时间:2022-04-29 11:27

我来回答

4个回答

热心网友 时间:2022-06-26 22:28

VB6.0可使用SavePicture 语句来保存窗体或图像框中经修改的图片。

1)SavePicture 语句,从对象或控件(如果有一个与其相关)的 Picture 或 Image 属性中将图形保存到文件中。



说明:无论在设计时还是运行时图形从文件加载到对象的 Picture
属性,而且它是位图、图标、元文件或增强元文件,则图形将以原始文件同样的格式保存。如果它是 GIF 或 JPEG 文件,则将保存为位图文件。

2)AutoRedraw 属性,返回或设置从图形方法到持久图形的输出。

该属性为True,可使 Form 对象或 PictureBox
控件的自动重绘有效。图形和文本输出到屏幕,并存储在内存的图象中。该对象不接受绘制事件,必要时,用存储在内存中的图象进行重绘。    

以下代码保存窗体装载并进行文字修饰的图片:

Option Explicit

Private Sub Command1_Click()
    SavePicture Image, App.Path & "\TEST"   ' 将图片保存到文件。
End Sub

Private Sub Form_Click()
    FontSize = 24
    Print " 将图片保存到文件"
End Sub

Private Sub Form_Load()
    Me.AutoRedraw = True
End Sub

3)若要保存为JPG图片需要采取使用API函数实现。参考以下步骤和代码:

a.在图片框加载需要添加文字水印的图片。

b.使用如下代码实现添加文字到图片框。

Private Sub CmdEdit_Click() '修改
    Dim strTxt As String
    strTxt = "风雨无阻 拍摄"
    Picture1.FontSize = 18
    Picture1.CurrentY = Picture1.ScaleHeight - 30
    Picture1.CurrentX = Picture1.ScaleWidth / 2 - Picture1.TextWidth(strTxt) / 2
    Picture1.ForeColor = vbWhite
    Picture1.FontItalic = True
    Picture1.Print strTxt
End Sub

c.将以下API转换图片格式代码放置于标准模块,模块命名为saveApg。

Option Explicit
    Public Type GUID
        Data1 As Long
        Data2 As Integer
        Data3 As Integer
        Data4(0 To 7) As Byte
    End Type
    Public Type GdiplusStartupInput
        GdiplusVersion As Long
        DebugEventCallback As Long
        SuppressBackgroundThread As Long
        SuppressExternalCodecs As Long
    End Type
    Public Type EncoderParameter
        GUID As GUID
        NumberOfValues As Long
        type As Long
        Value As Long
    End Type
    Public Type EncoderParameters
        Count As Long
        Parameter As EncoderParameter
    End Type
    Public Declare Function GdiplusStartup Lib "GDIPlus" (token As Long, inputbuf As GdiplusStartupInput, ByVal outputbuf As Long) As Long
    Public Declare Function GdiplusShutdown Lib "GDIPlus" (ByVal token As Long) As Long
    Public Declare Function GdipCreateBitmapFromHBITMAP Lib "GDIPlus" (ByVal hbm As Long, ByVal hpal As Long, Bitmap As Long) As Long
    Public Declare Function GdipDisposeImage Lib "GDIPlus" (ByVal Image As Long) As Long
    Public Declare Function GdipSaveImageToFile Lib "GDIPlus" (ByVal Image As Long, ByVal fileName As Long, clsidEncoder As GUID, encoderParams As Any) As Long
    Public Declare Function CLSIDFromString Lib "ole32" (ByVal str As Long, id As GUID) As Long
    Public Declare Function GdipCreateBitmapFromFile Lib "GDIPlus" (ByVal fileName As Long, Bitmap As Long) As Long
Public Function PictureBoxSaveJPG(ByVal pict As StdPicture, ByVal fileName As String, Optional ByVal quality As Byte = 80) As Boolean
    Dim tSI As GdiplusStartupInput
    Dim lRes As Long
    Dim lGDIP As Long
    Dim lBitmap As Long
    '初始化 GDI+
    tSI.GdiplusVersion = 1
    lRes = GdiplusStartup(lGDIP, tSI, 0)
    If lRes = 0 Then
        '从句柄创建 GDI+ 图像
        lRes = GdipCreateBitmapFromHBITMAP(pict.Handle, 0, lBitmap)
        
        If lRes = 0 Then
            Dim tJpgEncoder As GUID
            Dim tParams As EncoderParameters
            
            '初始化解码器的GUID标识
            CLSIDFromString StrPtr("{557CF401-1A04-11D3-9A73-0000F81EF32E}"), tJpgEncoder
            
            '设置解码器参数
            tParams.Count = 1
            With tParams.Parameter ' Quality
                '得到Quality参数的GUID标识
                CLSIDFromString StrPtr("{1D5BE4B5-FA4A-452D-9CDD-5DB35105E7EB}"), .GUID
                .NumberOfValues = 1
                .type = 4
                .Value = VarPtr(quality)
            End With
            
            '保存图像
            lRes = GdipSaveImageToFile(lBitmap, StrPtr(fileName), tJpgEncoder, tParams)
            
            '销毁GDI+图像
            GdipDisposeImage lBitmap
        End If
        
        '销毁 GDI+
        GdiplusShutdown lGDIP
    End If
    
    If lRes Then
        PictureBoxSaveJPG = False
    Else
        PictureBoxSaveJPG = True
    End If
End Function

d.使用以下代码实现将加好文字水印图片保存为jpg格式图片。

Private Sub Command3_Click() '保存为.jpg图片
    ' 设置“CancelError”为 True
    CommonDialog1.CancelError = True
    On Error GoTo ErrHandler
    ' 设置标志
    CommonDialog1.Flags = cdlOFNHideReadOnly
    ' 设置过滤器
    CommonDialog1.Filter = "JPEG Files" & "(*.jpg)|*.jpg"
    ' 指定缺省的过滤器
    CommonDialog1.FilterIndex = 2
    ' 显示“打开”对话框
    CommonDialog1.ShowSave
    ' 显示选定文件的名字
    'MsgBox CommonDialog1.fileName
    Set Picture2.Picture = Picture1.Image '转移Picture1所绘图为Picture2.Picture赋值
    Dim ret As Boolean
    ret = PictureBoxSaveJPG(Picture2, CommonDialog1.fileName) '保存压缩后的图片
    If ret = False Then
        MsgBox "保存失败"
    End If
    Exit Sub
ErrHandler:
    ' 用户按了“取消”按钮
    Exit Sub
End Sub

热心网友 时间:2022-06-26 22:29

我在VB的主窗体要装入一幅事先选好的图片,程序运行后我可以在图片上进行修改并可以保存它,以被以后调用。请问我怎样办?(CAO) 你可以把Form或PictureBox的AutoDraw设为True,修改后使用VB的SavePicture语句进行存盘。这种存盘的文件为.bmp文件,颜色数与当前屏幕的色彩数相同。如果想转换为其他格式,可以参考下面的相关问题。 如果你的存盘要求很高,例如希望控制存盘文件的色彩、格式,只能借助于其它控件,比如ImageMan( http://www.data-tech.com)、ImagN、Lead Tools( http://www.leadtools.com)等等。

热心网友 时间:2022-06-26 22:29

最好是用VB+Access来实现, 可以保存图片和相应的说明, 还可以分类管理。当然,用VB+MS-SQLserver也可以,但用MS-SQLserver的成本高些。

热心网友 时间:2022-06-26 22:30

有个材料还是什么的,可以用动态的或静态加载
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
宜昌夷陵区丶西陵区哪个区最繁华 宜昌哪些地方租房子好 宜昌CBD中心商务区项目分段定位 宜昌哪个地段房子好 奥迪a6油箱盖按键在什么位置 奥迪a6汽车加油盖按钮在哪 奥迪a6油箱盖怎么开 奥迪a6油箱盖的开关在哪里 图文结合带你搞懂MySQL日志之Error Log(错误日志) 变电站电磁辐射安全标准 ...马自达车辆搭载创驰蓝天GVC系统技术的好处是什么? GVC是什么鬼?你们知道么? 买男士手表能在网上买吗?有没有什么建议 代码生成的图片怎么保存 买手表在网上可以么? 懂表帝买表是不是只能去专柜?我想要直接网上买可以吗? 在网上买手表靠谱吗? 刚买一个月的苹果8p电池最大容量还是100%为什么会提示您电池的健康状况显著下降? 克里特手机文件怎么能传到电脑? Macbook air的电池容量变少了 怎么回事? Macbook Pro 电池容量怎么越来越少,macOS 讨论区 苹果笔记本电脑电池现在4年了,容量突然从70%降到5%。是什么原因? 我的macbook pro电池使用时间突然减少了。。。 我的mac电池为什么越用越小啊? Macbook Pro 电池容量怎么越来越少,Mac OS X 讨论区 苹果MacAir两个月前电池容量90%,现在掉到56%,充放电173次。什么原因导致减少?怎么维护电池?谢谢! 如何在PHP里防止SQL注入 中国邮政储蓄银行绿卡通借记卡有没有利息? 邮政储蓄卡(绿卡)有利息吗?如果有 利息是多少? 邮政储蓄银行卡存3000块钱1月多少利息? 电工师傅请帮忙看一下,浮球液位开关怎么安装的? 邮政银行卡寸钱进去有利息么 在网上买的电话手表可靠吗? jsp怎么保存图片,有没有详细的代码 如何用dreamweaver 把代码中的图片直接保存成本地图片,然后代码里的图片地址直接变成本地的 已知图片的URL地址,用代码怎样保存到磁盘 dreamweaver里代码转换成了图片,怎么把图片保存成本地图片呢 有一个关于保存图片的代码问题??麻烦大神帮忙解决一下 谢谢啦 如何将一个HTML代码段所能够显示的内容,保存成图片? js把图片旋转后如何用代码对其进行保存 用c++语言打开/保存一幅图片的代码? 易语言写截图代码。怎么,把图片。保存到指定文件夹。 怎么无法保存网上下载的图片呢?一段JAVA代码。 VB图像保存程序代码 求宿舍内小贴士标语,关于微笑,上锁,关灯关空调的 空调温馨提示语关于空调上自己贴个温馨提示语要怎么写?关于下班关空调了没有 关于空调上自己贴个温馨提示语要怎么写??关于温度的 关于空调上自己贴个温馨提示语不知该怎么写??关于温度的!!! 如何让员工下班主动关灯关空调 关空调英语 PHP怎么防止sql注入 格兰仕微波炉光波组合的炉温怎么调节