«1024x768» называют «разрешением» только в контексте настроек дисплея компьютера, и даже в этом случае это неудачное неправильное название. В изображении «1024x768» - это просто ширина & высота изображения, так что, как уже упоминали другие, вы уже показали код, который получает эти числа. Слегка подправлен:
var img = Image.FromFile(@"C:\image.jpg");
Console.WriteLine(img.Width + "x" + img.Height); // prints "1024x768" (etc)
Единственный встроенный метод для получения нужных вам чисел - это создание нового экземпляра (и, фактически, декодирование всего изображения), что будет крайне неэффективно, если вам нужно будет извлечь только эти числа для нескольких сотен изображений. Избежать этого сложно; вот отправная точка: Как надежно получить размеры изображения в .NET без загрузки изображения?
Когда вы говорите о «разрешении», вы обычно ссылаетесь на число точек или пикселей на дюйм . Класс Bitmap
сохраняет это в свойствах HorizontalResolution
/ VerticalResolution
, а класс Graphics - в DpiX
/ DpiY
.
Этот расчет:
bmp.Width * (g.DpiX / bmp.HorizontalResolution)
можно изменить для ясности следующим образом:
(bmp.Width / bmp.HorizontalResolution) * g.DpiX
где часть в скобках вычисляет ширину изображения в дюймах. Умножение на g.DpiX
дает количество пикселей в объекте Graphics
, ширина которого в дюймах равна ширине изображения bmp
.
.