Изменение разрешения изображения в 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 для установки разрешения нового растрового изображения. Наконец, метод сохраняет новое растровое изображение.
