从Picturebox保存图像 [英] Saving Image From Picturebox

查看:95
本文介绍了从Picturebox保存图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

将图片绘制到图片框.我根据宽度和高度调整了图片框中图像的大小,以使其正确地适合picutrebox.之后,我想保存它,同时保存它,我也想将非图像绘制部分也保存在保存的文件中.请查看屏幕截图,在屏幕截图中,我有2个白色部分标记为"X".当我将图片保存在图片框中时,我也想将空白部分(红色折边)也保存为透明.png或纯白色.jpg.

Iam drawing an image to a picturebox. I resize the image in the picturebox as per the width and height to fit it correctly in picutrebox. After that i want to save it, while saving it i also want to save the non image drawn part too in the saved file. Please see the screenshot, in the screenshot i have 2 white portions marked 'X'. when i save the image in picturebox i also want to save the blank portion too (place corssed in red) as either transparent .png or solid white .jpg.

实际上,我从Google复制了部分代码并进行了修改.如果有人请逐行解释,那就太好了,非常有帮助.

Actually i copied some parts of the code from google and modified. It will be great and so much helpful if someone please explain it line by line.


这是我到目前为止所不知道的

THis is what i have donw so far,

private void button1_Click(object sender, EventArgs e)
    {
        OpenFileDialog open = new OpenFileDialog();
        open.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp;  *.png)|*.jpg; *.jpeg; *.gif; *.bmp; *.png";
        if (open.ShowDialog() == DialogResult.OK)
        {               
            Image original = Bitmap.FromFile(open.FileName);
            pictureBox1.Image = new Bitmap(ScaleImage(original));

            pictureBox1.Padding = new Padding((pictureBox1.Width - ScaleImage(original).Width) / 2, (pictureBox1.Height - ScaleImage(original).Height) / 2, 0, 0);
        }
    }

    private Bitmap ScaleImage(Image oldImage)
    {
        double resizeFactor = 1;

        if (oldImage.Width > 300 || oldImage.Height > 300)
        {
            double widthFactor = Convert.ToDouble(oldImage.Width) / 300;
            double heightFactor = Convert.ToDouble(oldImage.Height) / 125;
            resizeFactor = Math.Max(widthFactor, heightFactor);
        }

        int width = Convert.ToInt32(oldImage.Width / resizeFactor);
        int height = Convert.ToInt32(oldImage.Height / resizeFactor);
        Bitmap newImage = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

        newImage.MakeTransparent(Color.White);

        Graphics g = Graphics.FromImage(newImage);

        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
        g.DrawImage(oldImage, 0, 0, newImage.Width, newImage.Height);
        return newImage;
    }
    private void button2_Click(object sender, EventArgs e)
    {
        pictureBox1.BackColor = Color.White;
        pictureBox1.Image.Save("D:\\temp.png", ImageFormat.Png);
    }

推荐答案

我希望这会有所帮助.尝试使用它来保存调整后的图像(我猜是在button2_Click中.)

I hope that this might help. Try to use it to save the resized image (in button2_Click I guess).

using (Bitmap bitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height))
{
    using (Graphics graphics = Graphics.FromImage(bitmap))
    {
        graphics.Clear(Color.Transparent);
        graphics.DrawImage(pictureBox1.Image, (bitmap.Width - pictureBox1.Image.Width) / 2, (bitmap.Height - pictureBox1.Image.Height) / 2);
    }

    bitmap.Save(@"D:\tmpMod.png", ImageFormat.Png);
}

这篇关于从Picturebox保存图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆