2014-06-24 4 views
-1
using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.IO; 

namespace newconvert 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 
     Bitmap bitmap; 
     public void Form1_Load(object sender, EventArgs e) 
     { 
      String fileName = 
       @"C:\Users\Public\Pictures\Sample Pictures\Jellyfish.jpg"; 

      using (Stream bmpStream = 
       System.IO.File.Open(fileName, System.IO.FileMode.Open)) 
      { 
       Image image = Image.FromStream(bmpStream); 

       bitmap = new Bitmap(image); 
       pictureBox1.Image = bitmap; 
      } 
     } 

     private void pictureBox1_Click(object sender, EventArgs e) 
     { 
     } 

     public void button1_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       String fileName = 
        @"C:\Users\Public\Pictures\Sample Pictures\Jellyfish.jpg"; 
       String fName = 
        @"C:\Users\Public\Pictures\Sample Pictures\Tulips.jpg"; 
       String Naming = 
        @"C:\Users\Public\Pictures\Sample Pictures\Hydrangeas.jpg"; 
       String Nam = 
        @"C:\Users\Public\Pictures\Sample Pictures\Lighthouse.jpg"; 
       String Namd = 
        @"C:\Users\Public\Pictures\Sample Pictures\Amazingly Funny People Photo #1 (11).jpg"; 

       using (Stream bmpStream = 
        System.IO.File.Open(fileName, System.IO.FileMode.Open)) 
       { 
        bitmap.Dispose(); 
        Image image = Image.FromStream(bmpStream); 

        bitmap = new Bitmap(image); 
        pictureBox2.Image = bitmap; 
        pictureBox2.Height = bitmap.Height; 
        pictureBox2.Width = bitmap.Width;  
       } 

      } 
      catch (Exception a) 
      { 
       MessageBox.Show("" + a); 
      } 
     } 
    } 
} 

Я использую вышеуказанный код в приложении Windows для преобразования jpg-файла в растровое изображение и потока изображения, которое он работает. Но мне нужно знать, как это сделать в приложении wpf. Я использую сетку для установки изображений. В сетке доступно только битмапирование. Как я могу это сделать?Как преобразовать jpg изображение в растровое изображение?

+0

возможно дубликат [Как я могу конвертировать JPG-файл в растровое изображение, используя C# ?] (http://stackoverflow.com/questions/24383256/how-can-i-convert-a-jpg-file-into-a-bitmap-using-c) –

+0

Daniel kin dly прочитать мой вопрос, мне нужно знать, как я могу это сделать в приложении wpf – KVK

ответ

1

попробовать что-то вроде этого

public BitmapImage ImageFromStream(Stream stream) 
{ 
    var image = new BitmapImage(); 
    image.BeginInit(); 
    image.StreamSource = stream; 
    image.EndInit(); 
    return image; 
} 

А потом

using (Stream bmpStream = System.IO.File.Open(fileName, System.IO.FileMode.Open)) 
{ 
    var bitmapImage = ImageFromStream(bmpStream); 
    // etc 
} 
+0

Для полноты: вам также нужно установить флаг «BitmapCacheOption.OnLoad» во время инициализации BitmapImage из потока, который сразу же закрывается после EndInit. См. Раздел «Примечания» [здесь] (http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmapimage.cacheoption.aspx) для справки. – Clemens

+0

Когда sou устанавливают 'image.StreamSource = stream;', иногда вам нужно использовать 'image.StreamSource = новый MemoryStream (stream.ToArray());', даже если вы установили бы позицию потока в 0. – KAI

0

От: MSDN

// Open a Stream and decode a JPEG image 
Stream imageStreamSource = new FileStream("tulipfarm.jpg", FileMode.Open, FileAccess.Read, FileShare.Read); 
JpegBitmapDecoder decoder = new JpegBitmapDecoder(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default); 
BitmapSource bitmapSource = decoder.Frames[0]; 

// Draw the Image 
Image myImage = new Image(); 
myImage.Source = bitmapSource; 
myImage.Stretch = Stretch.None; 
myImage.Margin = new Thickness(20); 
Смежные вопросы