簡體   English   中英

從Picturebox保存圖像

[英]Saving Image From Picturebox

Iam將圖像繪制到圖片框。 我根據寬度和高度在圖片框中調整圖像大小,以使其正確地適合picutrebox。 之后,我想保存它,同時保存它,我也想將非圖像繪制部分也保存在保存的文件中。 請查看屏幕截圖,在屏幕截圖中,我有2個白色部分標記為“ X”。 當我將圖像保存在圖片框中時,我也想將空白部分(紅色標記)也保存為透明.png或純白色.jpg。

實際上,我從Google復制了部分代碼並進行了修改。 如果有人請逐行解釋它,那將是非常不錯的幫助。

在此處輸入圖片說明


這就是我到目前為止所不知道的

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 )。

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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM