Как обрезать изображение, не меняя его разрешения? C#.Net?


Я сделал небольшую программу, чтобы разделить большие фотографии и взять часть из них. Когда я импортирую изображение, сделанное "Microsoft Paint", это изображение "96 dpi", поэтому моя программа работает хорошо.

Но у меня есть фотографии, сделанные Photoshop, их разрешение составляет 71,6 dpi, когда я обрезаю эти фотографии, новое обрезанное изображение принимает разрешение 96 dpi, поэтому размер является уважением между ними.

Я хочу обрезать картинку с сохранением ее разрешения.

.

Большое спасибо много

3 2

3 ответа:

Bitmap.clone позволяет создать обрезанную копию изображения, которую затем можно сохранить. Он не должен изменять разрешение или что-то еще (изображение будет выглядеть больше, если вы откроете его в программе, которая увеличивает масштаб, когда изображения меньше). Его нельзя использовать для расширения холста (вы избавитесь от ошибок памяти). Итак, просто возьмите Image из файла, приведите к Bitmap, (system.drawing пространство имен) и клонировать его, чтобы быть меньше, а затем сохранить его.

Пример:

using System.Drawing;
//...
Bitmap x = (Bitmap) Image.FromFile(@"c:\tmp\food.png");
Image x2 = x.Clone(new Rectangle(25, 25, 50, 50), x.PixelFormat);
x2.Save(@"c:\tmp\food2.png");

DPI (dots per inch) - это просто отношение между размером пикселя и размером на носителе. Если у вас есть изображение размером 1024 x 768 пикселей, это 1024 x 768. К растровому/двоичному файлу нет встроенного DPI.

Если вы хотите напечатать это изображение на принтере, который печатает при 300 dpi, то вы можете рассчитать размер на бумаге, например.

Метод SetResolution() класса Bitmap позволяет задать разрешение изображения.

См. http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.setresolution.aspx