久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4409|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

用Excel生成自動(dòng)需要內(nèi)容的圖片

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:262 發(fā)表于 2016-8-12 15:34 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
為了給現(xiàn)有的視頻上添加幀編碼,因此需要自動(dòng)形成一個(gè)自動(dòng)編號(hào)的圖片序列。每一張圖片的內(nèi)容僅僅是0001,0002這樣的數(shù)字。最簡(jiǎn)單的辦法是使用Excel在一個(gè)單元格中生成這樣的數(shù)字,然后把這個(gè)單元格的內(nèi)容復(fù)制到圖片中保存起來(lái),就得到了所需的圖片。

經(jīng)過(guò)查詢,在網(wǎng)上找到了這樣的代碼,可以實(shí)現(xiàn)所需的功能。

代碼如下:
Option Explicit

Option Compare Text

' 用戶定義類型以便API調(diào)用

'聲明UDT來(lái)為IPicture OLE接口儲(chǔ)存GUID
Private Type GUID
    Data1 As Long
    Data2 As Integer
    Data3 As Integer
    Data4(0 To 7) As Byte
End Type

'聲明UDT儲(chǔ)存bitmap信息
Private Type uPicDesc
    Size As Long
    Type As Long
    hPic As Long
    hPal As Long
End Type

'Windows API函數(shù)聲明

'剪貼板包括bitmap/metafile嗎?
Private Declare Function IsClipboardFormatAvailable Lib "user32" (ByVal wFormat As Integer) As Long

'打開剪貼板讀取
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long

'獲取bitmap/metafile指針
Private Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Integer) As Long

'關(guān)閉剪貼板
Private Declare Function CloseClipboard Lib "user32" () As Long

'將句柄轉(zhuǎn)換到OLE IPicture接口里.
Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll" (PicDesc As uPicDesc, _
                         RefIID As GUID, ByVal fPictureOwnsHandle As Long, IPic As IPicture) As Long

'創(chuàng)建自已的metafile副本,以便不會(huì)因?yàn)殡S后剪貼板的更新而擦除
Declare Function CopyEnhMetaFile Lib "gdi32" Alias "CopyEnhMetaFileA" _
                         (ByVal hemfSrc As Long, ByVal lpszFile As String) As Long

'創(chuàng)建自已的bitmap副本,以便不會(huì)因?yàn)殡S后剪貼板的更新而擦除
Declare Function CopyImage Lib "user32" (ByVal handle As Long, ByVal un1 As Long, _
                          ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long

'我們要使用的API格式類型
Const CF_BITMAP = 2
Const CF_PALETTE = 9
Const CF_ENHMETAFILE = 14
Const IMAGE_BITMAP = 0
Const LR_COPYRETURNORG = &H4

Dim vFile As Variant

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''' 過(guò)程: PastePicture
'''
''' 用途: 獲取在剪貼板中的Picture對(duì)象
'''
''' 參數(shù): lXlPicType - 要?jiǎng)?chuàng)建的圖片類型,為下列類型之一:
'''                    xlPicture是創(chuàng)建metafile (默認(rèn))
'''                    xlBitmap是創(chuàng)建bitmap
'''
''' 日期          開發(fā)者              修訂記錄
''' --------------------------------------------------------------------------
''' 98年10月30日  Stephen Bullen      創(chuàng)建
''' 98年11月15日  Stephen Bullen      更新以創(chuàng)建自已的剪貼板圖像副本
'''

Function PastePicture(Optional lXlPicType As Long = xlPicture) As IPicture

    '一些指針
    Dim h As Long, hPicAvail As Long, hPtr As Long, hPal As Long, lPicType As Long, hCopy As Long

    '將xl常量的圖片類型轉(zhuǎn)換為API常量
    lPicType = IIf(lXlPicType = xlBitmap, CF_BITMAP, CF_ENHMETAFILE)

    '檢查剪貼板是否包含所需的格式
    hPicAvail = IsClipboardFormatAvailable(lPicType)

    If hPicAvail <> 0 Then
        '獲取對(duì)剪貼板的訪問
        h = OpenClipboard(0&)

        If h > 0 Then
            '獲取圖像數(shù)據(jù)句柄
            hPtr = GetClipboardData(lPicType)

            '以合適的格式創(chuàng)建自已的剪貼板中圖像的副本
            If lPicType = CF_BITMAP Then
                hCopy = CopyImage(hPtr, IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG)
            Else
                hCopy = CopyEnhMetaFile(hPtr, vbNullString)
            End If

            '對(duì)其它程序釋放剪貼板
            h = CloseClipboard

            '如果獲取了圖像句柄,將其轉(zhuǎn)換為Picture對(duì)象并返回
            If hPtr <> 0 Then Set PastePicture = CreatePicture(hCopy, 0, lPicType)
        End If
    End If

End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''' 過(guò)程: CreatePicture
'''
''' 用途: 將圖像(和調(diào)色板)句柄轉(zhuǎn)換為Picture對(duì)象.
'''
'''       需要引用"OLE Automation"類型庫(kù)
'''
''' 參數(shù): 無(wú)
'''
''' 日期          開發(fā)者           修訂記錄
''' --------------------------------------------------------------------------
''' 98年10月30日  Stephen Bullen   創(chuàng)建
'''

Private Function CreatePicture(ByVal hPic As Long, ByVal hPal As Long, ByVal lPicType) As IPicture

    ' IPicture需要引用"OLE Automation"
    Dim r As Long, uPicInfo As uPicDesc, IID_IDispatch As GUID, IPic As IPicture

    'OLE圖片類型
    Const PICTYPE_BITMAP = 1
    Const PICTYPE_ENHMETAFILE = 4

    ' 創(chuàng)建接口GUID (IPicture接口)
    With IID_IDispatch
        .Data1 = &H7BF80980
        .Data2 = &HBF32
        .Data3 = &H101A
        .Data4(0) = &H8B
        .Data4(1) = &HBB
        .Data4(2) = &H0
        .Data4(3) = &HAA
        .Data4(4) = &H0
        .Data4(5) = &H30
        .Data4(6) = &HC
        .Data4(7) = &HAB
    End With

    ' 填充uPicInfo
    With uPicInfo
        .Size = Len(uPicInfo)                                                   ' 結(jié)構(gòu)的長(zhǎng)度.
        .Type = IIf(lPicType = CF_BITMAP, PICTYPE_BITMAP, PICTYPE_ENHMETAFILE)  ' Picture類型
        .hPic = hPic                                                            ' 圖像句柄
        .hPal = IIf(lPicType = CF_BITMAP, hPal, 0)                              ' 調(diào)色板句柄(bitmap)
    End With

    ' 創(chuàng)建Picture對(duì)象.
    r = OleCreatePictureIndirect(uPicInfo, IID_IDispatch, True, IPic)

    ' 如果發(fā)生錯(cuò)誤,則顯示錯(cuò)誤描述
    If r <> 0 Then Debug.Print "創(chuàng)建圖片: " & fnOLEError(r)

    ' 返回新的Picture對(duì)象.
    Set CreatePicture = IPic

End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''' 過(guò)程: fnOLEError
'''
''' 用途: 獲取代表標(biāo)準(zhǔn)OLE錯(cuò)誤的消息文本
'''
''' 參數(shù): 無(wú)
'''
''' 日期           開發(fā)者              修訂記錄
''' --------------------------------------------------------------------------
''' 98年10月30日   Stephen Bullen      創(chuàng)建
'''

Private Function fnOLEError(lErrNum As Long) As String

    'OLECreatePictureIndirect返回值
    Const E_ABORT = &H80004004
    Const E_ACCESSDENIED = &H80070005
    Const E_FAIL = &H80004005
    Const E_HANDLE = &H80070006
    Const E_INVALIDARG = &H80070057
    Const E_NOINTERFACE = &H80004002
    Const E_NOTIMPL = &H80004001
    Const E_OUTOFMEMORY = &H8007000E
    Const E_POINTER = &H80004003
    Const E_UNEXPECTED = &H8000FFFF
    Const S_OK = &H0

    Select Case lErrNum
        Case E_ABORT
            fnOLEError = " 終止"
        Case E_ACCESSDENIED
            fnOLEError = " 拒絕訪問"
        Case E_FAIL
            fnOLEError = " 失敗"
        Case E_HANDLE
            fnOLEError = " 丟失/缺失句柄"
        Case E_INVALIDARG
            fnOLEError = " 無(wú)效參數(shù)"
        Case E_NOINTERFACE
            fnOLEError = " 沒有接口"
        Case E_NOTIMPL
            fnOLEError = " 沒有執(zhí)行"
        Case E_OUTOFMEMORY
            fnOLEError = " 內(nèi)存溢出"
        Case E_POINTER
            fnOLEError = " 無(wú)效指針"
        Case E_UNEXPECTED
            fnOLEError = " 未知錯(cuò)誤"
        Case S_OK
            fnOLEError = " 成功!"
    End Select

End Function

‘’‘’ 這個(gè)是要運(yùn)行的主函數(shù),存儲(chǔ)數(shù)據(jù)的表單名稱為PICS,從A1:Axxx存儲(chǔ)所需的數(shù)字。然后把這些數(shù)字保存到自動(dòng)編號(hào)的位圖文件中。

Sub SaveDataToBMP()
    Dim lPicType As Long, oPic As IPictureDisp
    Dim cPath As String
    Dim cName As String
    Dim nRow As Integer

    cPath = "D:\temp\File"    ‘位圖文件保存的路徑為 D:\temp\, 位圖文件名為Filexxxx.bmp。

    For nRow = 0 To 8234
        vFile = cPath & Format(nRow, "0000") & ".bmp"
        Sheets("PICS").Range(Cells(nRow + 1, 1), Cells(nRow + 1, 1)).CopyPicture xlScreen, xlBitmap ’數(shù)字保存在第一列中,復(fù)制到剪貼板中。
        Set oPic = PastePicture(xlBitmap)  '從剪貼板復(fù)制到位圖中
        SavePicture oPic, vFile        ‘將位圖保存。
    Next

    MsgBox "Done"
End Sub

使用以上的方法,可以很快生成上千個(gè)位圖文件。



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩一区二区在线视频 | 91麻豆精品国产91久久久久久 | 欧美中文在线 | 成人精品毛片国产亚洲av十九禁 | 欧美一区永久视频免费观看 | 久久天堂 | 一级片在线观看视频 | 国产欧美一区二区三区在线看蜜臀 | 国产精品免费小视频 | 久久精品国产99国产精品亚洲 | h在线免费观看 | 成人一区二区电影 | 国产一区在线看 | 亚洲国产欧美国产综合一区 | 欧美一区二区三区免费在线观看 | 99久久99热这里只有精品 | 91在线观看免费视频 | 二区久久 | 日韩欧美二区 | 久久成人精品视频 | 久久91 | 精品视频www| 国色天香综合网 | 亚洲综合在线视频 | 男女性毛片 | 日韩欧美在线视频观看 | 亚洲精品中文字幕 | 欧美精品在线一区二区三区 | 国产在线a | 中文字幕精品一区二区三区在线 | 国内精品一区二区 | 欧美猛交| 久久综合久色欧美综合狠狠 | 国产精品视频久久久久久 | 中文字幕亚洲欧美日韩在线不卡 | 免费在线视频a | 成人国产在线观看 | 精品在线一区 | 91久久看片 | 亚洲成人一区二区在线 | 久久亚洲视频网 |