Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1551 | Anzahl registrierter User: 1841 | Besucher online: 118
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Bitmap Header auslesen (File & Info)


Autor: Tim Hartwig
Sprache: VB.NET
Bewertung:
noch nicht bewertet
Anzahl der Aufrufe: 9144
  
Kick it on dotnet-kicks.de  

Beschreibung:

Ich habe mir mal auf Wikipedia die Spezifikation für eine Bitmap Datei angeschaut und dachte mir das ich mal eine kleine Klasse schreibe um die beiden Header FileHeader und InfoHeader aus einer Bitmap datei auszulesen.

Ihr könnt euch das ja mal anschauen.
Die Informationen könnt ihr hier nachlesen:
http://de.wikipedia.org/wiki/Windows_bitmap


Abgelegt unter: Bitmap, Header.



Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
Imports System.IO

''' <summary>
''' Klasse um File und Infor Header aus einer Bitmap Datei auszulesen.
''' </summary>
''' <remarks>Tim Hartwig</remarks>
Public Class BitmapInformation
    Public Structure BITMAPFILEHEADER
        ''' <summary>Der Typ der Datei, sollte bei Bitmap Dateien immer "BM" sein.</summary>
        Public bfType As String
        ''' <summary>Die Dateigröße der Bitmap Datei.</summary>
        Public bfSize As UInt32
        ''' <summary>Reservierter Bereich, ist normalerweise 0</summary>
        Public bfReserved As UInt32
        ''' <summary>Die Gesamtgröße aller Header und Bilddaten, danach kommen die Informationen für das eigentliche Bild.</summary>
        Public bfOffBits As UInt32
    End Structure

    Public Structure BITMAPINFOHEADER
        ''' <summary>Die Größe dieses InfoHeaders, sollte 40 sein.</summary>
        Public biSize As UInt32
        ''' <summary>Die Breite des Bilds.</summary>
        Public biWidth As UInt32
        ''' <summary>Die Höhe des Bilds.</summary>
        Public biHeight As UInt32
        ''' <summary>Die Anzahl der Farbebenen, wird nicht mehr verwendet, steht normalerweise auf 1.</summary>
        Public biPlanes As UInt16
        ''' <summary>Die Farbtiefe des Bilds in Bit.</summary>
        Public biBitCount As UInt16
        ''' <summary>Die Kompressionseinstellung für das Bild. 0, 1, 2 oder 3.</summary>
        Public biCompression As UInt32
        ''' <summary>Die Fläche des Bilds in QuadratPixel (Breite*Höhe).</summary>
        Public biSizeImage As UInt32
        ''' <summary>Horizontale Auflösung des Zielausgabegerätes in Pixel pro Meter, jedoch meistens auf 0.</summary>
        Public biXPelsPerMeter As UInt32
        ''' <summary>Vertikale Auflösung des Zielausgabegerätes in Pixel pro Meter, jedoch meistens auf 0.</summary>
        Public biYPelsPerMeter As UInt32
        ''' <summary>Parameter für eine eventuelle Farbtabelle nach diesem InfoHeader.</summary>
        Public biClrUsed As UInt32
        ''' <summary>Wenn biBitCount=1, 4 oder 8: Die Anzahl sämtlicher im Bild verwendeten Farben; 0 bedeutet alle Farben der Farbtabelle.</summary>
        Public biClrImportant As UInt32
    End Structure

    ''' <summary>
    ''' Diese Methode ließt die Header (File u. Info) aus einer Bitmap Datei.
    ''' </summary>
    ''' <param name="FileName">Der Name der Bitmap Datei dessen Header ausgelesen werden sollen.</param>
    ''' <param name="FileHeader">Eine Instanz eines BITMAPFILEHEADER Objekts als Referenz.</param>
    ''' <param name="InfoHeader">Eine Instanz eines BITMAPINFOHEADER Objekts als Referenz.</param>
    ''' <remarks></remarks>
    Public Sub ReadData(ByVal FileName As String, ByRef FileHeader As BITMAPFILEHEADER, ByRef InfoHeader As BITMAPINFOHEADER)
        'Bytes aus Bitmap Datei einlesen
        Dim FS As New FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.Read)
        Dim Buffer(54 - 1) As Byte
        FS.Read(Buffer, 0, 54)
        FS.Close()

        'FileHeader Daten auslesen
        FileHeader.bfType = ByteToString(Buffer, 0, 2)
        FileHeader.bfSize = BitConverter.ToInt32(Buffer, 2) 'Der BitConverter.ToInt32 ließt immer nur 4 Bytes aus
        FileHeader.bfReserved = BitConverter.ToInt32(Buffer, 6)
        FileHeader.bfOffBits = BitConverter.ToInt32(Buffer, 10) 'Sollte 54 sein, wenn nicht folgen optionale Informationen ab Byte 54

        'InfoHeader Daten auslesen
        InfoHeader.biSize = BitConverter.ToInt32(Buffer, 14) 'Sollte 40 sein
        InfoHeader.biWidth = BitConverter.ToInt32(Buffer, 18)
        InfoHeader.biHeight = BitConverter.ToInt32(Buffer, 22)

        InfoHeader.biPlanes = BitConverter.ToInt16(Buffer, 26)
        InfoHeader.biBitCount = BitConverter.ToInt16(Buffer, 28)

        InfoHeader.biCompression = BitConverter.ToInt32(Buffer, 30)
        InfoHeader.biSizeImage = BitConverter.ToInt32(Buffer, 34)
        InfoHeader.biXPelsPerMeter = BitConverter.ToInt32(Buffer, 38)
        InfoHeader.biYPelsPerMeter = BitConverter.ToInt32(Buffer, 42)
        InfoHeader.biClrUsed = BitConverter.ToInt32(Buffer, 46)
        InfoHeader.biClrImportant = BitConverter.ToInt32(Buffer, 50)
    End Sub

    Private Function ByteToString(ByVal Expression() As Byte, ByVal StartIndex As Integer, ByVal Length As Integer) As String
        Return System.Text.Encoding.Default.GetString(Expression, StartIndex, Length)
    End Function
End Class
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)



schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.