none
ZXing 解析二维码问题 在线等 RRS feed

  • 问题

  • 大家好,请教个问题

    我在使用ZXing提供的方法decode处理二维码的时候总是出现这个异常:

    “Attempted to read or write protected memory. This is often an indication that other memory is corrupt.”

    这个问题应该怎样处理?

    部分代码如下:

       private async void fun(object sender, RoutedEventArgs e)
            {
                FileOpenPicker imagePicker = new FileOpenPicker
                {
                    ViewMode = PickerViewMode.List,
                    SuggestedStartLocation = PickerLocationId.PicturesLibrary,
                    FileTypeFilter = { ".jpg", ".png", ".bmp", ".gif", ".tif" }
                };
                StorageFile imageFile = await imagePicker.PickSingleFileAsync();
                using (IRandomAccessStream fileStream = await imageFile.OpenAsync(Windows.Storage.FileAccessMode.Read))
                {
                    WriteableBitmap writeableBitmap = new WriteableBitmap(1010, 1010); // Getting Error Here
                    await writeableBitmap.SetSourceAsync(fileStream);
                    container.Source = writeableBitmap;
                    IBarcodeReader reader = new BarcodeReader();
                    var result = reader.Decode(writeableBitmap);    //这行出现异常
                    output.Text = result.Text;
                }
            }

    thx


    • 已编辑 BaiYi 2013年1月11日 2:44
    2013年1月10日 9:23

答案

  • Hi,

    我认为这个应该是这个插件里面机制的问题,它应该会按照图片的属性来检查整个流,而因为实际的图片和初始化的内存不一样所以导致的错误,如果是内存分配出的问题应该是在await writeableBitmap.SetSourceAsync(fileStream);这句话就出错了。


    Aaron
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 BaiYi 2013年1月21日 5:49
    2013年1月14日 7:21
    版主

全部回复

  • 这个问题我已经解决了;是因为这行代码:  WriteableBitmap writeableBitmap = new WriteableBitmap(1010, 1010); 实例化的writeableBitmap 的pixelwidth,pixelheight必须与image的高,宽相同。

    不过这个内存管理机制是什么样的呢 ?   谢谢 指教

    2013年1月14日 1:52
  • Hi,

    我认为这个应该是这个插件里面机制的问题,它应该会按照图片的属性来检查整个流,而因为实际的图片和初始化的内存不一样所以导致的错误,如果是内存分配出的问题应该是在await writeableBitmap.SetSourceAsync(fileStream);这句话就出错了。


    Aaron
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 BaiYi 2013年1月21日 5:49
    2013年1月14日 7:21
    版主
  • Ok  明白了  非常感谢 Xue
    2013年1月21日 5:50