Изменение разрешения изображения в C#
В этом примере показано, как изменить разрешение изображения. Это еще один пример, который я создал для написания книг. Обычно компьютеры работают с изображениями с разрешением 96 пикселей на дюйм (PPI). Принтеры и издатели часто требуют изображений с более высоким разрешением, таких как 300 точек на дюйм (DPI). В этом примере показано, как преобразовать изображение из одного разрешения в другое. В то время как я был на нем, я также решил, чтобы программа изменила размер изображения, если вы хотите это сделать.
Когда вы вызываете команду Open меню File, выполняется следующий код.
private void mnuFileOpen_Click(object sender, EventArgs e) { if (ofdOriginal.ShowDialog() == DialogResult.OK) { OriginalBitmap = new Bitmap(ofdOriginal.FileName); pictureBox1.Image = OriginalBitmap; using (Graphics gr = Graphics.FromImage(OriginalBitmap)) { txtDpiX.Text = gr.DpiX.ToString(); txtDpiY.Text = gr.DpiY.ToString(); } txtWidth.Text = OriginalBitmap.Width.ToString(); txtHeight.Text = OriginalBitmap.Height.ToString(); mnuFileSaveAs.Enabled = true; } }
Этот код отображает диалоговое окно «Открыть файл», чтобы вы могли выбрать файл изображения. Если вы выберете файл и нажмите «Открыть», программа загрузит файл в растровое изображение. Он создает объект Graphics, связанный с растровым изображением, и использует его свойства DpiX и DpiY для отображения разрешения исходного изображения. Он также отображает растровое изображение Width и Height.
Чтобы изменить разрешение или размеры изображения, просто введите текстовые поля. Затем, когда вы вызываете команду «Сохранить как» меню «Файл», выполняется следующий код.
private void mnuFileSaveAs_Click(object sender, EventArgs e) { if (sfdNew.ShowDialog() == DialogResult.OK) { int old_wid = OriginalBitmap.Width; int old_hgt = OriginalBitmap.Height; int new_wid = int.Parse(txtWidth.Text); int new_hgt = int.Parse(txtHeight.Text); using (Bitmap bm = new Bitmap(new_wid, new_hgt)) { Point[] points = { new Point(0, 0), new Point(new_wid, 0), new Point(0, new_hgt), }; using (Graphics gr = Graphics.FromImage(bm)) { gr.DrawImage(OriginalBitmap, points); } float dpix = float.Parse(txtDpiX.Text); float dpiy = float.Parse(txtDpiY.Text); bm.SetResolution(dpix, dpiy); SaveImage(bm, sfdNew.FileName); SystemSounds.Beep.Play(); } } }
В этом коде отображается диалоговое окно «Сохранить файл». Если вы выберете файл и нажмите «Сохранить», код читает новые значения в текстовых окнах. Затем он создает растровое изображение, которое имеет новые размеры. Он создает связанный объект Graphics и использует его метод SetResolution для установки разрешения нового растрового изображения. Наконец, метод сохраняет новое растровое изображение.