Как узнать свойства 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д