Получить разрешение изображения в формате jpeg с помощью C # и среды .NET?

StackOverflow https://stackoverflow.com/questions/123838

  •  02-07-2019
  •  | 
  •  

Вопрос

Наши клиенты будут загружать изображения для печати в своих документах, и нас попросили придумать способ получения разрешения изображения, чтобы предупредить их, если разрешение изображения слишком низкое и в конечном продукте оно будет выглядеть неровным

Если дойдет до этого, мы могли бы также указать размеры, если кто-нибудь знает, как их получить, но разрешение было бы предпочтительнее

Спасибо

Это было полезно?

Решение

Система.Чертеж.Изображение

Image newImage = Image.FromFile("SampImag.jpg");
newImage.HorizontalResolution

Другие советы

Это зависит от того, что вы ищете...если вам нужен DPI изображения, то вы ищете HorizontalResolution, которое является DPI изображения.

Image i = Image.FromFile(@"fileName.jpg");
i.HorizontalResolution;

Если вы хотите выяснить, насколько велико изображение, то вам нужно вычислить размеры изображения, которые:

int docHeight = (i.Height / i.VerticalResolution);
int docWidth = (i.Width / i.HorizontalResolution);

Это даст вам высоту и ширину документа в дюймах, которые затем вы сможете сравнить с минимальным необходимым размером.

Значение DPI имеет смысл только при печати.72dpi - это стандарт Mac, а 96dpi - стандарт Windows.Разрешение экрана учитывает только пиксели, поэтому формат jpeg с разрешением 72dpi 800x600 соответствует разрешению экрана с разрешением 96dpi 800x600 пикселей.

Еще в 80-х годах Mac использовал разрешение экрана / печати 72dpi, чтобы соответствовать размеру экрана / печати, поэтому, когда у вас было изображение на экране в соотношении 1: 1, оно соответствовало тому же размеру на принтере.Windows увеличила разрешение экрана до 96 точек на дюйм, чтобы улучшить отображение шрифта..но, как следствие, изображение на экране больше не соответствует напечатанному размеру.

Итак, для веб-проекта не беспокойтесь о DPI, если изображение не предназначено для печати;72dpi, 96dpi, даже 1200dpi должны отображаться одинаково.

Image image = Image.FromFile( [file] );
GraphicsUnit unit = GraphicsUnit.Point;
RectangleF rect = image.GetBounds( ref unit );
float hres = image.HorizontalResolution;
float vres = image.VerticalResolution;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top