Как я могу обрезать изображение без изменения его разрешения в C # .Net? - PullRequest
2 голосов
/ 13 мая 2009

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

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

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

.

большое спасибо

Ответы [ 3 ]

5 голосов
/ 13 мая 2009

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");
3 голосов
/ 13 мая 2009

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

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

1 голос
/ 13 мая 2009

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

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

...