picture控件里的图片如何保存到xml文件,如何再回读出来用picture控件显示?

解决方案 »

  1.   

    可以将图片生成文件,然后用base64编码保存到xml文件中。读出则进行相反的操作。
      

  2.   

    谢谢,但能免提供代码,这样说难度太大?
    另外可否不把图片存成文件而直接Base64编码?
    而反过来又如何把Base64转成一个Picture对像?
      

  3.   

    <?xml version="1.0"?>
    <root>
    <photo xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="bin.base64">
    /9j/4AAQSkZJRgABAQEAYABgAAD/2wB
    DAAgGBgcGBQgHBwcJCQgKDBQNDAsLDB
    kSEw8UHRofHh0aHBwgJC4nICIsIxwcK
    DcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBD
    AQkJCQwLDBgNDRgyIRwhMjIyMjIyMjI
    yMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
    IyMjIyMjIyMjIyMjIyMjIyMjL/wAARC
    ABGAEYDASIAAhEBAxEB/8QAHwAAAQUB
    AQEBAQEAAAAAAAAAAAECAwQFBgcICQo
    L/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQ
    IDAAQRBRIhMUEGE1FhByJxFDKBkaEII
    0KxwRVS0fAkM2JyggkKFhcYGRolJico
    KSo0NTY3ODk6Q0RFRkdISUpTVFVWV1h
    ZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4
    iJipKTlJWWl5iZmqKjpKWmp6ipqrKzt
    LW2t7i5usLDxMXGx8jJytLT1NXW19jZ
    2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8Q
    AHwEAAwEBAQEBAQEBAQAAAAAAAAECAw
    QFBgcICQoL/8QAtREAAgECBAQDBAcFB
    AQAAQJ3AAECAxEEBSExBhJBUQdhcRMi
    MoEIFEKRobHBCSMzUvAVYnLRChYkNOE
    l8RcYGRomJygpKjU2Nzg5OkNERUZHSE
    lKU1RVVldYWVpjZGVmZ2hpanN0dXZ3e
    Hl6goOEhYaHiImKkpOUlZaXmJmaoqOk
    paanqKmqsrO0tba3uLm6wsPExcbHyMn
    K0tPU1dbX2Nna4uPk5ebn6Onq8vP09f
    b3+Pn6/9oADAMBAAIRAxEAPwD3+iis7
    XNXh0PRrnUZxlIUyFB5ZugUfU4oSvog
    bsV/EHibTfDdsJb6U+Y/+rgQZeT6D09
    zxXn58c+LPEl1JB4fsVhVRk7FDso/2m
    b5R+VcRd3eo+IdXaeYSXN7cthUQZPsq
    j0Feu/D3RrrQNOubTUI44rqaQT7Vbcd
    hAAz7gg/nXZKnCjC71kckakqsrLRHnv
    9veNm1cad9uvxfl9v2cqoOevTGMY5z0
    rcm8X+M/ClzDFrtvFcRSDKlgo3Dvh04
    z7EVfutWvItbe4kh0mHxWLd7e3tZLnM
    RUygpuYdGKZ4+nrW3490i517QreytIo
    3vhKJVUtjhQd2D+OKhVoTkk4q3UuVCp
    CN7u/Q0vDfivTfE1uWtHKXCAGW3kwHT
    39x7it2vm23n1DQNXWaMSWt9bP91xgj
    1BHcGvoDQdXh13RbXUYRtEy/MmfuMOC
    PwOaVej7N3WzHRrc+j3RpUUUVzm4V5z
    8XLlk0nTrUE7Zp2dv+Arx+pr0auB+K9
    g1x4etrxFJ+yz/PjsrDGfzxWtBpVFcy
    rJum7Fb4d6HHZ6LHqrI5vL0ny3QrlIx
    0UbvXBJ/CuuUyXF1HBOCSMlWZfLcfQq
    ayvB9raat4J0kyBiY4tg2uRsZSRke9b
    kKPYk7rNJAP+WsCAMfqv+GaVWTlNtlU
    0lBJHD33w+vpPEt21vqMSWGot5k/mJu
    lUAglVJ756HNdlcKtjOBDL5bOvOdpY4
    /2nP6VLLfQm9tn/egKrhsxMMZxjtTLq
    /edhbW1o7u4zukTAA/vYP8AXFYRhGN7
    dTpq151UlN7aHGfEDRhqGiS6p5RF3Y4
    LylkJdDjKnb6ZyP8A69P+EVy76XqVq3
    3Ip1df+BLz/wCg1q+JEsbPwVqzJCY5E
    hZGDjDF34yQODnNZ3wltDFoV9dHP7+5
    2j3CqB/MmutSvQafc4Wv3ya7HoVFFFc
    50BVbULGDUtOuLK5XdDOhRx7GrNB6UA
    eVeD9Y/wCEM1298Ma1OkUW/wAyGZzhc
    kdc9gwwfqDXe/8ACVaB/wBBix/7/rXi
    /jfURqfi3UJ0BRI38gbT97Zxk/jn9K9
    A0H4baOdEtH1OGWW9eMPK3nMACecYHp
    0q68aqtNpal4d4RrlcpXXkrfmdP/wlW
    h9Rqduyc5dWyg+rDgVSufFmiWc016uq
    Wc0Rj+dEmUuNuSNozz16VhzfD+aK6WC
    xkjTT/m4diSAex45I5781bvfhn4f/AL
    NuEt7WXz/KYRkzMfmxx39a5oOo3Zo3c
    MMl8T+789TiPFXjWfxNI2nWFmyW9xLE
    iFjiRyCcAjoAWYflXrnh/Sk0TQrPTlI
    JhjAZh/E3Vj+ZNfO1t5guoAuRMJUAHc
    NuH9a+mh0GetejiYKCUY7Hl4eTm3KW4
    tFFFch1BRRRQB4d8SdDj0rxQZ7d/kvk
    abYf4Hz834Hr+demaVq0GuaPY6hbySt
    EqbLmKJyGjbAzkDk4I/I5ri/i5GTqWm
    zL8wETo2BnacgjPpnn8q4XTdU1DSbn7
    Rp1zNbyngmPow9COhrvVP21KOuqOH2n
    sqr00Z76zaUUDNdFvb7Q5P5ZzS25hsI
    7q/nJtrUKD+9c/Koz8xz0zn+VeRf8LN
    8TR/Li2Z26SG2AJ/WsXVfEOsa6R/aV7
    LMoOREPlQH/AHRxWUcJNvVmssVFLQ29
    B+ya78UI50j2Wst1JcRpjH3QWGR7kZr
    3GvDPh3GyeMbW5kV0hiSQtIykKCVwMn
    oOte5g5pYrSaS6IeG1g2+rCiiiuY6Ao
    oooAzmikspJnCxywyvvIbhgx/A5HFQW
    +pRzybIbONW9yB/SiigCeWxuZp1lM0C
    bM7FEO4c+uT/hSi2u1PC2Le/lEf1ooo
    Af5N66lGktkQ8ELET/ADOKsWtutraxw
    KzMsahQWPNFFAEtFFFAH//Z1LWZ48/q
    Z//ZAA==
    </photo>
    </root>上面的内容保存成photo.xml文件,用下面的代码读出图片
    Private Sub Command1_Click()    Dim xmlDoc As New MSXML2.DOMDocument
        xmlDoc.Load App.Path & "\vbtoy.xml"
        Dim fn As String
        fn = App.Path & "\xml.jpg"
        If Dir(fn) <> "" Then Kill fn
        
         Dim iStm As ADODB.Stream
        Set iStm = New ADODB.Stream
        With iStm
            .Mode = adModeReadWrite
            .Type = adTypeBinary
            .Open
            .Write xmlDoc.selectSingleNode("root").selectSingleNode("photo").nodeTypedValue
            .SaveToFile fn
            Picture1.Picture = LoadPicture(fn)
        End WithEnd Sub
      

  4.   

    谢谢,我的原意是,假如我知道了一个stdPicture对像,该对像已经存了一个图像,如何在不先保存到硬盘的情况下,用API得到对像的二进制流存放在一个变量里,这样就可以对该变量转成Base64编码,再存进XML?
      

  5.   

    Option ExplicitPrivate bytes() As BytePrivate Sub Command1_Click()
        Dim pb As PropertyBag
        Set pb = New PropertyBag
        pb.WriteProperty "Picture", Picture1.Picture
        bytes = pb.Contents
        保存bytes到xml
    End SubPrivate Sub Command2_Click()
        Dim pb As PropertyBag
        '从xml读取bytes
        Set pb = New PropertyBag
        pb.Contents = bytes
        Set Picture2.Picture = pb.ReadProperty("Picture")
    End SubPrivate Sub Form_Load()
        Set Picture1.Picture = LoadPicture("C:\1.bmp")
    End Sub