Добрый день. Имеется код, объединяющий два изображения в одно:
Bitmap bmp1 = new Bitmap("iphone.jpg");
OpenFileDialog dialog = new OpenFileDialog();
if (dialog.ShowDialog() == DialogResult.OK)
{
int bmp1_width = bmp1.Width;
int bmp1_height = bmp1.Height;
Bitmap bmp2 = new Bitmap(dialog.FileName);
Bitmap final_bmp = new Bitmap(bmp1_width, bmp1_height);
pictureBox1.Image = final_bmp;
Graphics g = Graphics.FromImage(final_bmp);
g.DrawImage(bmp1, 0, 0, bmp1_width, bmp1_height);
g.DrawImage(bmp2, 24, 103, 242, 342);
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
g.Dispose();
pictureBox1.Invalidate();
final_bmp.Save("D:\\output1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
}
Можно ли как-то гарантировано сохранить это обобщенное изображение, чтобы в итоге оно имело максимально возможное качество?
Если присмотреться, то вы сами можете увидеть, что отображаются всякие квадратики и тому подобное. В оригинальном изображении такого нет.
using (Bitmap bmp1 = new Bitmap(@"C:\TestPhoto.jpg"))
{
ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);
myEncoderParameter = new EncoderParameter(myEncoder, 0L);//вот этот 0L можешь заменить на 100L - это измениние уровня компрессии
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(@"C:\TestPhotoQualityZero.jpg", jpgEncoder, myEncoderParameters);
}
А лучше сохраняй в .png
Сборка персонального компьютера от Artline: умный выбор для современных пользователей