【问题标题】:save Image from Image-Control wpf c#从 Image-Control wpf c# 保存图像
【发布时间】:2016-04-25 14:18:44
【问题描述】:

我用 ZXing.net 做了一个 QR-Code Encoder (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);
        }
    }

不幸的是,图像没有被保存。此外,我也不例外。希望你能看到我的错误。

非常感谢

【问题讨论】:

    标签: c# image save qr-code


    【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 2012-10-15
      • 2012-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 2011-11-15
      • 2013-01-14
      • 1970-01-01
      相关资源
      最近更新 更多