2016-04-25 82 views
0

我通過使用ZXing.net從圖像控制保存圖像WPF C#

我在圖像控制顯示QR碼由QR碼編碼器(WPF,C#)

 var writer = new BarcodeWriter 
     { 
      Format = BarcodeFormat.QR_CODE, 
      Options = new ZXing.Common.EncodingOptions 
      { 
       Height = 200, 
       Width = 200, 
       Margin = 0 
      } 
     }; 


     var image = writer.Write(qrtext.Text); 
     qrImg.Source = image; 

之後,我想保存圖像。我正在使用這個例子Save Image in a Folder

private void btnSaveImg_Click(object sender, RoutedEventArgs e) 
    { 

     string filePath = @"C:\Users\xxx\Desktop\image.png"; 

     SaveToPng(qrImg, filePath); 
    } 

    void SaveToBmp(FrameworkElement visual, string fileName) 
    { 
     var encoder = new BmpBitmapEncoder(); 
     SaveUsingEncoder(visual, fileName, encoder); 
    } 

    void SaveToPng(FrameworkElement visual, string fileName) 
    { 
     var encoder = new PngBitmapEncoder(); 
     SaveUsingEncoder(visual, fileName, encoder); 
    } 

    // and so on for other encoders (if you want) 


    void SaveUsingEncoder(FrameworkElement visual, string fileName, BitmapEncoder encoder) 
    { 
     RenderTargetBitmap bitmap = new RenderTargetBitmap((int)visual.ActualWidth, (int)visual.ActualHeight, 96, 96, PixelFormats.Pbgra32); 
     bitmap.Render(visual); 
     BitmapFrame frame = BitmapFrame.Create(bitmap); 
     encoder.Frames.Add(frame); 

     using (var stream = File.Create(fileName)) 
     { 
      encoder.Save(stream); 
     } 
    } 

不幸的是圖像沒有被保存。此外,我也不例外。希望你看到我的錯誤。

THX很多

回答

1

我找到了另一種解決方案,在此基礎上一篇:How can I save the picture on image control in wpf?

所以我的解決方案,爲我的作品是:

String filePath = @"C:\Users\xxx\Desktop\test.jpg"; 

     var encoder = new PngBitmapEncoder(); 
     encoder.Frames.Add(BitmapFrame.Create((BitmapSource)qrImg.Source)); 
     using (FileStream stream = new FileStream(filePath, FileMode.Create)) 
     encoder.Save(stream);