ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 17.03.2000

Diese Seite wurde zuletzt aktualisiert am 17.03.2000
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für IE, Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Bilder zu Bytes

Zurück...


Anzeige

(-hg) mailto:hg_picturetobytes@aboutvb.de

Aus welchem Grund auch immer Sie vielleicht das Bild eines Picture-Objekts als reine Byte-Sammlung benötigen könnten - ob etwa zum Speichern in einer Datenbank (es gibt immer noch Datenbanken mit Schnittstellen, die mit einem Picture-Objekt nichts anzufangen wissen) oder zum zwischenzeitlichen "objektfreien" Ablegen im Arbeitsspeicher: Das Picture-Objekt liefert Ihnen die Bytes nicht frei Haus. Nun könnten Sie die Bytes einer einfachen Bitmap mit Hilfe einiger API-Funktionen anhand der Handle-Eigenschaft des Picture-Objekts erhalten. Und auch bei Bildern im Icon-, Cursor- oder Metafile-Format wäre das irgendwie möglich und mit noch höherem Aufwand verbunden. Ganz zu schweigen vom "Rückwärtsgang", wenn Sie die Byte-Daten wieder in ein Picture-Objekt zurück verwandeln wollen. Nicht sonderlich elegant, aber dafür mit weitaus weniger Aufwand verbunden, wäre der Umweg über temporäre Dateien.

Elegant und einfach ist dagegen der kleine Umweg über ein PropertyBag-Objekt. Seit Visual Basic 6 können Sie nämlich selbst Instanzen davon anlegen, ein oder mehrere Objekt(e) darin ablegen ("serialisieren") und den Inhalt komplett als Byte-Array auslesen. Umgekehrt können Sie natürlich auch ein Byte-Array einlesen und von dem PropertyBag-Objekt wieder die darin abgelegten Objekte erzeugen lassen. Die Bytes eines so konvertierten Picture-Objekts enthalten dieses dann allerdings in einem eigenen Format, das beispielsweise nicht mehr zu einem der Bild-Datei-Formate kompatibel ist. Es sind eben nur einfach Bytes, im Sinne der Eingangs angeführten Aufgabenstellung.

Die Funktion PictureToBytes gibt Ihnen ein übergebenes Picture-Objekt als Byte-Array zurück. Dem Gegenstück BytesToPicture übergeben Sie ein derartig erzeugtes Byte-Array und erhalten wiederum ein Picture-Objekt zurück. Bei beiden Funktionen können Sie noch im optionalen Parameter den Schlüsselnamen angeben, unter dem das Picture-Objekt im PropertyBag-Objekt abgelegt wird - als Standard-Name wird "Bild" verwendet.

In beiden Funktionen wird das PropertyBag-Objekt übrigens in einer With-Konstruktion direkt instanziert und verwendet, ohne dass zuvor eigens eine Objekt-Variable deklariert worden wäre.

Public Function PictureToBytes(Picture As StdPicture, _
 Optional Key As String = "Bild") As Byte()

  With New PropertyBag
    .WriteProperty Key, Picture
    PictureToBytes = .Contents
  End With
End Function

Public Function BytesToPicture(Bytes() As Byte, _
 Optional Key As String = "Bild") As StdPicture

  With New PropertyBag
    .Contents = Bytes
    Set BytesToPicture = .ReadProperty(Key)
  End With
End Function

Die Funktionen PictureToBytes und BytesToPicture konvertieren ein Picture-Objekt in ein Byte-Array und wieder zurück

Wenn wir schon einmal dabei sind: Auf gleiche Weise lässt sich auch eine ganze in einer Collection abgelegte Sammlung von Picture-Objekten in Bytes und wieder zurück in eine Collection verwandeln - mit den Funktionen PictureCollectionToBytes und BytesToPictureCollection.

Public Function PictureCollectionToBytes( _
 Collection As Collection, _
 Optional CountKey As String = "Anzahl", _
 Optional PicKey As String = "Bild") As Byte()

  Dim l As Long
  
  With New PropertyBag
    .WriteProperty CountKey, Collection.Count, 0
    For l = 1 To Collection.Count
      .WriteProperty PicKey & l, Collection(l)
    Next 'l
    PictureCollectionToBytes = .Contents
  End With
End Function

Public Function BytesToPictureCollection(Bytes() As Byte, _
 Optional CountKey As String = "Anzahl", _
 Optional PicKey As String = "Bild") As Collection

  Dim l As Long
  Dim nCollection As Collection
  
  Set nCollection = New Collection
  With New PropertyBag
    .Contents = Bytes
    For l = 1 To .ReadProperty(CountKey, 0)
      nCollection.Add .ReadProperty(PicKey & l)
    Next 'l
  End With
  Set BytesToPictureCollection = nCollection
End Function

Die Funktionen PictureCollectionToBytes und BytesToPictureCollection konvertieren in einer Collection enthaltene Picture-Objekte in ein Byte-Array und wieder zurück


Modul modPictureBytes (modPictureBytes.bas - ca. 1,6 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikel

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche



Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer