2015-09-10 2 views
0

Iam рисование изображения на фотошоп. Я изменяю размер изображения в окне изображения в соответствии с шириной и высотой, чтобы правильно поместить его в picutrebox. После этого я хочу сохранить его, сохраняя его. Я также хочу сохранить часть неизображения в сохраненном файле. Посмотрите скриншот, на скриншоте у меня есть две белые части с надписью «X». когда я сохраняю изображение в ящике изображений, я также хочу сохранить пустую часть (место порезать красным цветом) как прозрачный .png или сплошной белый .jpg.Сохранение изображения из фреймворка

На самом деле я скопировал некоторые части кода из Google и изменил. Это будет здорово и полезно, если кто-то объяснит это по строкам.

enter image description here


Это то, что я есть donw до сих пор,

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

В настоящее время iam сохраняет изображение в картинке. Думаю, мне пришлось спасти всю картину или что-то в этом роде. Когда я спасу, я также хочу сохранить изображение без изменений. Добавьте прозрачность или сплошной цвет в скрещенном месте. – locknies

+0

Если некоторые другие предлагают другие варианты добавления изображения, изменения размера и сохранения без рамки, также приветствуются! – locknies

+0

Я не могу понять, какая цель здесь. Это сохранить сохраненное изображение или отобразить изображение в окне изображения? Итак, что вы в основном хотите, это изменить размер изображения, чтобы он соответствовал некоторым размерам с нагромождением этого соотношения и перетащить белым или прозрачным в пробелы? – Matyas

ответ

3

Я надеюсь, что это может помочь. Попробуйте использовать его для сохранения измененного изображения (в 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); 
} 
Смежные вопросы