ImageTypesLibrary

    • Release

    Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von hitman48.

      ImageTypesLibrary

      Name des Programms:
      ImageTypesLibrary

      Beschreibung:
      Diese kleine Library überprüft oder ermittelt den ImageTyp einer Bilddatei. Aber nicht über die Dateiendung, die man ja beliebig ändern kann, sondern über die in der Datei enthaltenen Information. Diese Methode ist damit aufjedenfall immer 100%ig korrekt, den richtigen Typ zu ermitteln.
      Die aktuelle Version unterstützt die Typen: PNG, BMP, JPEG, GIF und TIFF.
      Wenn noch wichtige Typen fehlen bitte ich sie mir mitzuteilen, ich werde sie dann noch ergänzen.

      Screenshot:
      - keiner vorhanden -

      Einbinden:
      Die in dem RAR Archiv enthaltenen Dateien in den Projektordner Entpacken, über Verweise die ImageTypesLibrary hinzufügen und im Codefenster über die Klasse den Import:

      VB.NET-Quellcode

      1. Imports ImageTypesLibrary


      Funktionen:
      IsPNG(File) - Boolean
      IsBMP(File) - Boolean
      IsGIF(File) - Boolean
      IsTIFF(File) - Boolean
      IsJPEG(File) - Boolean
      IsImage(File) - Boolean
      IsImage(File, Collection, TypeInList) - Boolean
      SupportedTypes() - Collection of supported Imagetypes
      GetImageType(File) - Type.PNG / Type.BMP / Type.GIF / Type.TIFF / Type.JPEG / Type.Unkown

      Beispiel:

      VB.NET-Quellcode

      1. Imports ImageTypesLibrary
      2. Public Class Form1
      3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      4. Dim imgCollection As New ImageTypes.TypeCollection
      5. imgCollection.Add(ImageTypes.Type.BMP)
      6. imgCollection.Add(ImageTypes.Type.GIF)
      7. If ImageTypes.IsImage("E:\_\bild.jpg", imgCollection, False) Then
      8. MessageBox.Show("Ist eine gültige Bilddatei")
      9. End If
      10. Dim SupportedTypes As ImageTypes.TypeCollection = ImageTypes.SupportedTypes()
      11. For Each sType As ImageTypes.Type In SupportedTypes
      12. Debug.WriteLine(sType)
      13. Next
      14. End Sub
      15. End Class


      Verwendete Programmiersprache:
      Visual Basic 2008

      Systemanforderungen:
      .NET Framework 3.5

      Download:
      ImageTypesLibrary (6 KB / 16KB)

      Lizenz/Weitergabe:
      Freeware

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Dodo“ ()

      Hey

      Bei GetImageType(File) tät ich noch Type.Nothing oder so als Rückgabewert möglich machen (falls es kein Bild oder halt kein unterstütztes Format hat). Verstehst du wie ich mein?
      Bin leider noch nicht dazu gekommen, es zu testen, aber gute Idee :thumbup:

      LG,
      Beep :)
      Type.Unkown gibt es natürlich xD .. habs vergessen einzufügen in den Post!

      Edit: Mir ist noch eine nützliche Funktion eingefallen, die überprüft ob es überhaupt eine Bilddatei ist, so muss man sich keine eigene Abfrage machen.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dodo“ ()

      So es gibt ein Update der Library, zum einen hatte ich den Enum für GIF vergessen und es sind noch 2 Funktionen hinzugekommen.

      Zum einen kann man nun auf die existens oder nicht existens von Imagetypen testen.

      Mit IsImage(Datei) wird die Datei mit den unterstützten Imagetypen abgeglichen und wenn es sich um eine gültige Datei handelt wird True zurück gegeben.
      Mit der zweiten Überlagerung IsImage(Datei, Collection, TypeInList) wird eine vom Benutzerdefinierte Collection zum checken genommen und man kann zudem angeben ob die Datei Typen in der Collection entsprechen darf oder nicht. Also z.b. Wenn die Collection BMP und GIF enthält und TypeInList auf True ist muss die Datei ein BMP oder GIF sein. Ist jedoch TypeInList auf False darf die Datei allen Unterstützen Typen entsprechen AUSER denen der Collection.

      Download weiterhin im ersten Post.
      FALSCH ... es IST eben noch ein Bild. Windows und seine blöden Endungen!!!!!!
      Du kannst mit einem Bildviewer immernoch deine Bild1.dat ansehen. Die Dateiendung hat NICHTS mit dem Inhalt zu tun, es ist lediglich für Windows eine Gruppierung um Dateien einem Programm zuzuordnen.

      Edit: Steht ja extra im ersten Post, das es eben NICHT an der Dateiendung überprüft ob es ein Bild ist oder nicht, weil Endungen kann man einfach ändern.
      Es gibt aber auch Ausnahmen! Wenn man ein MP3 oder eine EXE als TXT speichert, können, wenn die Datei den falschen Zeichensatz hat, Daten verloren gehen und die EXE/MP3 - selbst nach dem wieder umbenennen - nicht mehr funktionstätig sein!
      Von meinem iPhone gesendet

      nikeee13 schrieb:

      Wenn man ein MP3 oder eine EXE als TXT speichert

      "speichern" ist aber nicht dasselbe wie "umbenennen". Das eine wirkt sich auf den Inhalt aus, dass andere ausschließlich auf den Namen der Datei. Wobei das Problem eigentlich schon beim Laden auftritt, denn ein Text-Editor kann üblicherweise wenig mit Zeichencodes anfangen, die "0" sind.
      @hitman48 Der TE ist lange aus dem Forum raus.

      Du kannst aber sowas hier verwenden.
      Quellcode lizensiert unter CC by SA 2.0 (Creative Commons Share-Alike)

      Meine Firma: Procyon Systems
      Meine Privatwebseite: SimonC.eu

      Bitte nicht wundern, wenn meine Aktivitäten im Forum etwas langsamer sind, ich baue gerade mein Nebengewerbe zum Vollgewerbe aus.
      Ich versuche auf euch zurückzukommen :)
      Das Thema ist fast 15 Jahre alt und der Eigentümer des Projekts ist nicht mehr Forenmitglied. Die Anfrage wird daher nahezu ungehört verhallen …
      Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

      Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
      Anstatt die MagicBytes eines Bildes auszulesen, kannst auch einfach .NET nutzen.

      VB.NET-Quellcode

      1. Imports System.Drawing.Imaging
      2. Public Class Form1
      3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      4. Dim Ret As String = "unknown"
      5. Using Img As Image = Bitmap.FromFile("D:\bild.jpg")
      6. If (Img.RawFormat.Equals(ImageFormat.Jpeg)) Then
      7. Ret = "image/jpeg"
      8. ElseIf (Img.RawFormat.Equals(ImageFormat.Bmp)) Then
      9. Ret = "image/bmp"
      10. ElseIf (Img.RawFormat.Equals(ImageFormat.Emf)) Then
      11. Ret = "image/emf"
      12. ElseIf (Img.RawFormat.Equals(ImageFormat.Exif)) Then
      13. Ret = "image/exif"
      14. ElseIf (Img.RawFormat.Equals(ImageFormat.Gif)) Then
      15. Ret = "image/gif"
      16. ElseIf (Img.RawFormat.Equals(ImageFormat.Icon)) Then
      17. Ret = "image/icon"
      18. ElseIf (Img.RawFormat.Equals(ImageFormat.Png)) Then
      19. Ret = "image/png"
      20. ElseIf (Img.RawFormat.Equals(ImageFormat.Tiff)) Then
      21. Ret = "image/tiff"
      22. ElseIf (Img.RawFormat.Equals(ImageFormat.Wmf)) Then
      23. Ret = "image/wmf"
      24. End If
      25. End Using
      26. Debug.Print(Ret)
      27. End Sub
      28. End Class

      Auch das ermitteln aller Bild-Encoder wäre in .NET möglich. Alternativ wäre auch WIC eine Möglichkeit wobei WIC noch mehr Bildformate lesen kann.
      Mfg -Franky-