Как узнать свойства Jpeg, gif, png и т.д. файла, такие как высота, ширина и т.п - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Привет всем, вот вопросик у меня. Как узнать свойства Jpeg, gif, png и т.д. файла, такие как высота, ширина и т.п., не загружая в память картинку. Т.е. имеется файл с путем "C:\1.jpg", нужно НЕ открывая его (это конечно не значит, что прочитать его нельзя), т.е. НЕ присваивать этот файл какой-либо переменной или Picturebox, узнать такие параметры как высота и ширина. Люди говорят, что нужно заголовок файла считывать и там находить эту информацию, но опять-таки говорят, что у Jpeg эта инфа лежит в разный местах и возникают проблемы с ее считкой. Но самое интересное, что если в проводнике вызвать контекстное меню у любого jpeg, gif (да вообще любого) файла, затем выбрать пункт Свойства, то на вкладке Подробно можно увидеть всю нужную инфу (размеры, разрешение, глубину цвета и т.д.) Как винда это делает? При этом никакого файла thumbs.db в папке нет. Вот если бы узнать, что за API за это отвечает (скорее всего это все-таки API) - было бы здорово!

Решение задачи: «Как узнать свойства Jpeg, gif, png и т.д. файла, такие как высота, ширина и т.п»

textual
Листинг программы
Public Class Form1
 
    Dim ImagExt As New List(Of String)(New String() {"*.jpeg", "*.jpg", "*.gif", "*.bmp", "*.png"})
    Dim iList As ImageList = New ImageList()
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.DoubleBuffered = True
 
        iList.ImageSize = New Size(128, 128)
        iList.ColorDepth = ColorDepth.Depth32Bit
 
        ListView1.LargeImageList = iList
        ListView1.View = View.LargeIcon
    End Sub
 
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        ListView1.Items.Clear()
        iList.Images.Clear()
 
        Dim FBD As New FolderBrowserDialog
        If FBD.ShowDialog = Windows.Forms.DialogResult.OK Then
 
            Dim Files() = My.Computer.FileSystem.GetFiles(FBD.SelectedPath, FileIO.SearchOption.SearchTopLevelOnly, ImagExt.ToArray).ToArray
            For i = LBound(Files) To UBound(Files)
 
                Dim img As Image = Image.FromFile(Files(i))
                Dim imgThumb As Image = img.GetThumbnailImage(100, 100, Nothing, New IntPtr())  'тут меняется качество эскиза. 
 
                iList.Images.Add(imgThumb)
 
                Dim list As New ListViewItem(IO.Path.GetFileNameWithoutExtension(Files(i)))
                list.ImageKey = Files(i)
                list.ImageIndex = i
                ListView1.Items.Add(list)
 
            Next
 
        End If
 
    End Sub
End Class

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.231 из 5
Похожие ответы