2010-01-02 4 views
0

Comment générer une image miniature dans WPF dans le scénario suivant?Génération d'images miniatures dans WPF

 using (MemoryStream mem = new MemoryStream(imgbytes)) 
      { 
       BitmapImage jpgimage = new BitmapImage(); 
       jpgimage.BeginInit(); 

       jpgimage.CacheOption = BitmapCacheOption.OnLoad; 

       jpgimage.StreamSource = mem; 

       jpgimage.EndInit(); 

       Image wpfimage = new Image(); 
       wpfimage.Source = jpgimage.Clone(); 

       lbx.Items.Add(wpfimage); 
       lbx.UpdateLayout(); 
       Thread.Sleep(1000); 
      } 

Répondre

2

Voici un code que j'utilise pour convertir une image que j'ai téléchargée du web en une image miniature. est-ce que cela aide? Vraisemblablement, vous pouvez découper les bits où je l'enregistre dans un fichier.

using (var ms = new MemoryStream(e.Result)) 
{ 
    var bi = new BitmapImage(); 
    bi.BeginInit(); 
    bi.StreamSource = ms; 
    bi.DecodePixelWidth = _maxThumbnailWidth; 
    bi.EndInit(); 

    var encoder = new JpegBitmapEncoder(); 
    encoder.Frames.Add(BitmapFrame.Create(bi)); 
    using (var fs = new FileStream(filename, FileMode.Create)) 
    { 
     encoder.Save(fs); 
    } 
} 
+0

point de vue de la performance ce qui a inconvénient, je suis tombé sur ce lors du chargement des centaines de TIFF avec des pixels decode, WPF suce .. pour JPEGS son impressionnant. . !! Vous cherchez un autre format TIF !!!! – Jay

+0

J'ai une bêta à partir de demain et ça allait être un showstopper. Je manquais de mémoire, et cela a fait l'affaire. Merci! – NielW

3

Celui-ci a parfaitement fonctionné pour moi

 <Image Width="120" Height="120" HorizontalAlignment="Center"> 
      <Image.Source>    
       <BitmapImage DecodePixelWidth="100" DecodePixelHeight="100" UriSource="Garden.jpg" /> 
      </Image.Source> 
     </Image>