我正在使用C#库来读取QRCodes.我发现的很多样本都基于旧版本的zxing,其中RGBluminanceSource构造函数仍然采用位图.在最新版本中,RGBluminanceSource只接受byte [].我试图将位图转换为byte [],但解码结果始终为null.

这是我用于转换的代码:

private byte[] GetRGBValues(Bitmap bmp)
{
  // Lock the bitmap's bits. 
  System.Drawing.Rectangle rect = new System.Drawing.Rectangle(0,bmp.Width,bmp.Height);
  System.Drawing.Imaging.BitmapData bmpData = bmp.LockBits(rect,System.Drawing.Imaging.ImageLockMode.ReadOnly,bmp.PixelFormat);

  // Get the address of the first line.
  IntPtr ptr = bmpData.Scan0;

  // Declare an array to hold the bytes of the bitmap.
  int bytes = bmpData.Stride * bmp.Height;
  byte[] rgbValues = new byte[bytes];
  // copy the RGB values into the array.
  System.Runtime.InteropServices.Marshal.copy(ptr,rgbValues,bytes);
  bmp.UnlockBits(bmpData);

  return rgbValues;
}

并用于解码:

Bitmap bitmap = Bitmap.FromFile(@"C:\QRimages.jpg") as Bitmap;
luminanceSource source = new RGBluminanceSource(GetRGBValues(bitmap),bitmap.Width,bitmap.Height);

var binarizer = new HybridBinarizer(source);
var binBitmap = new BinaryBitmap(binarizer);
QRCodeReader reader = new QRCodeReader();
var result = reader.decode(binBitmap);

不知何故,结果始终为null.

另外,我们的要求是我们必须使用相机拍摄的图像.我试过这个:

Bitmap bitmap = Bitmap.FromFile(@"C:\QRimages.jpg") as Bitmap;
BarcodeReader reader = new BarcodeReader { AutoRotate = true,TryHarder = true };
Result result = reader.Decode(bitmap);

它仅适用于我在线下载的QR图像,但是如果我打印出该图像并用手机拍照,那么尝试处理该图像,结果返回null.

任何建议,将不胜感激.

这是我正在使用的图像:

解决方法

尝试捕捉平行于表面的照片.它会解码.我试过了.

c# – 用zxing读取图像中的QR码的更多相关文章

  1. ios – 如何使用Swift在AVCaptureVideoPreviewLayer的特定区域捕获QR码数据?

    我正在创建一个iPad应用程序,其中一个功能是扫描QR码.我有QR扫描部分工作,但我的问题是iPad屏幕非常大,我将扫描一张纸的小QR码,同时可以看到许多QR码.我想指定显示器的较小区域是唯一可以实际捕获QR码的区域,因此用户更容易扫描他们想要的特定QR码.我目前已经制作了一个带有红色边框的临时UIView,它以页面为中心,作为我希望用户扫描QR码的示例.它看起来像这样:我已经到处寻找一个答案,我

  2. 如何在iOS7中构建和打印可扫描的Passbook Pass

    我无法弄清楚如何在iOS7的PassbookApp中使用新的QR码扫描器扫描通道的OR代码.当我尝试使用指向工作通行证的链接扫描QR码时,应用程序说它是“此卡无法通行证”.卡,哼哼?!

  3. ios – MonoTouch,ZXing:呈现ZXingScannerViewController失败

    因此,在我的应用程序开始时,用户必须能够扫描QR码.在应用程序设置中,用户可以扫描另一个条形码以更改设置中的某些数据.在我的应用程序开始扫描仪工作正常,但当我尝试扫描settingsVC中的条形码时,我得到以下警告:我已经尝试在viewDidAppear上调用扫描,但是我得到了相同的警告.编辑:试图使用没有异步的条形码扫描仪,但我仍然得到相同的消息.我也尝试使用AVFoundation导致同样的错

  4. Android:使用Zxing生成的二维码有边距(不适合该区域)

    我在我的应用程序ZXing库中使用它来生成QR码.我想生成适合屏幕宽度的QR码.如果我将屏幕宽度设置为QR码的宽度尺寸,我会得到更小的QR码.看截图.我想要QR码适合黑色区域.为什么QR码红色这么小?

  5. android – 如何在不安装barcodescanner应用程序的情况下使用ZXing库

    我一直在开发一个Android应用程序来扫描条形码和QR码,并将结果发送到其他应用程序(HTTP).我已经通过互联网阅读了大部分文档,并且在堆栈中通过流程阅读并使其正常工作.我能够在我的设备上运行独立的zxingandroid应用程序,我也可以运行我自己的独立Android应用程序来使用Zxing意图扫描条形码.但即使在阅读了这么多问题以及互联网上的一些博客之后,我也无法满足我的严格要求.我想实现

  6. 从图库android中扫描条形码

    我正在创建一个android项目,主要功能是扫描条码.我尝试将Zxing库集成到我的项目中,并且它工作正常.但是,似乎不支持从Android设备库中的可用图像扫描条形码.我怎么能这样做?

  7. android – 如何在ZXing中设置位图的大小?

    我正在使用ZXing生成QR码.这就是我的代码:而另一部分:这是我正在使用代码的xaml:问题是,无论我将什么设置为Convertimagestream的高度和宽度,结果图像都不是方形,而是看起来像这样:怎么把它变成正方形?提前致谢.解决方法您的代码是正确的,图像大小正确:我通过保存加倍检查:然后拉它并检查它的大小:我的页面代码:更新:你看到的是框架比图像宽,而不是图像本身.更改框架的BackgroundColor

  8. android – 扫描时自动更改屏幕方向(使用ZXING库)

    我有MainActivity.kt,在那里我展示了不同需求的不同片段.在某些时候,我按下调用startScanner()函数的按钮’X’:的Manifest.xml:Gradle.file:它确实打开扫描仪和一切,但在横向模式.为什么这不起作用?解决方法有一个快捷方式可以做到这一点.只需将其添加到清单:

  9. android – zxing onActivityResult仅在“活动”中仅在片段中调用

    我在zxingonActivityResult()中遇到一些问题.正如您可以在代码中看到的,我已经正确地调用了https://code.google.com/p/zxing/wiki/ScanningViaIntent所述的新意图.问题是如何在Fragment中捕获onActivityResult(),因为我需要Fragmnet中的这些数据而不是Activity?解决方法正如Martynnw指出的

  10. android – 如何使用zxing库从一个图像中读取多个qr代码

    我正在开发一个扫描仪,读取一个图像中找到的多个QR码.我设法读取图像中的QR码,但它给我不一致的结果.假设图像中有4个QR码,有时候我可以读取2,有时候可以读取2或者只是1.与原始扫描仪(ZXingScanner)不同,它可以快速解码.在我的情况下,我必须确保有足够的光线,并且图像不会模糊解码.我正在使用QRCodeMultiReader来解码图像.目前使用ZXingLibrary来创建应用程序.

随机推荐

  1. c# – (wpf)Application.Current.Resources vs FindResource

    所以,我正在使用C#中的WPF创建一个GUI.它看起来像这样:它现在还没有完成.这两行是我尝试制作一种数据表,它们在XAML中是硬编码的.现在,我正在C#中实现添加新的水果按钮功能.我在XAML中有以下样式来控制行的背景图像应该是什么样子:因此,在代码中,我为每列col0,col1和col2创建一个图像,如果我使用以下代码,它添加了一个如下所示的新行:如你所见,它不太正确……为什么一个似乎忽略了一些属性而另一个没有?

  2. c# – 绑定DataGridTemplateColumn

    似乎我已经打了个墙,试图在DataGrid上使用DataTemplates.我想要做的是使用一个模板来显示每个单元格的两行文本.但是似乎无法以任何方式绑定列.以下代码希望显示我想做的事情.注意每个列的绑定:模板列没有这样的东西,因此,这个xaml不可能工作.我注定要将整个DataTemplate复制到每个列,只是对每个副本都有不同的约束?解决方法我不完全确定你想要做什么,但如果您需要获取整行的DataContext,可以使用RelativeSource绑定来移动视觉树.像这样:

  3. c# – 学习设计模式的资源

    最近我来到了这个设计模式的概念,并对此感到非常热情.你能建议一些帮助我深入设计模式的资源吗?

  4. c# – 是否有支持嵌入HTML页面的跨操作系统GUI框架?

    我想开发一个桌面应用程序来使用跨系统,是否有一个GUI框架,允许我为所有3个平台编写一次代码,并具有完全可脚本化的嵌入式Web组件?我需要它有一个API来在应用程序和网页之间进行交流.我知道C#,JavaScript和一些python.解决方法Qt有这样的事情QWebView.

  5. c# – 通过字符串在对象图中查找属性

    我试图使用任意字符串访问嵌套类结构的各个部分.给出以下(设计的)类:我想要从Person对象的一个实例的“PersonsAddress.HousePhone.Number”获取对象.目前我正在使用反思来做一些简单的递归查找,但是我希望有一些忍者有更好的想法.作为参考,这里是我开发的(crappy)方法:解决方法您可以简单地使用标准的.NETDataBinder.EvalMethod,像这样:

  6. c# – 文件下载后更新页面

    FamilyID=0a391abd-25c1-4fc0-919f-b21f31ab88b7&displaylang=en&pf=true它呈现该页面,然后使用以下元刷新标签来实际向用户提供要下载的文件:你可能需要在你的应用程序中做类似的事情.但是,如果您真的有兴趣在文件完全下载后执行某些操作,那么您的运气不佳,因为没有任何事件可以与浏览器进行通信.执行此操作的唯一方法是上传附件时使用的AJAXupload.

  7. c# – 如何在每个机器应用程序中实现单个实例?

    我必须限制我的.net4WPF应用程序,以便每台机器只能运行一次.请注意,我说每个机器,而不是每个会话.我使用一个简单的互斥体实现单实例应用程序,直到现在,但不幸的是,这样一个互斥是每个会话.有没有办法创建机器互连,还是有其他解决方案来实现每个机器应用程序的单个实例?

  8. c# – WCF和多个主机头

    我的雇主网站有多个主机名,都是同一个服务器,我们只是显示不同的皮肤来进行品牌宣传.不幸的是,在这种情况下,WCF似乎不能很好地工作.我试过overridingthedefaulthostwithacustomhostfactory.这不是一个可以接受的解决方案,因为它需要从所有主机工作,而不仅仅是1.我也看过thisblogpost,但是我无法让它工作,或者不是为了解决我的问题.我得到的错误是“这

  9. c# – ASP.NET MVC模型绑定与表单元素名称中的虚线

    我一直在搜索互联网,试图找到一种方式来容纳我的表单元素的破折号到ASP.NET的控制器在MVC2,3或甚至4中的默认模型绑定行为.作为一名前端开发人员,我更喜欢在我的CSS中使用camelCase或下划线进行破折号.在我的标记中,我想要做的是这样的:在控制器中,我会传入一个C#对象,看起来像这样:有没有办法通过一些正则表达式或其他行为来扩展Controller类来适应这种情况?我讨厌这样的事实,我必须这样做:甚至这个:思考?

  10. c# – 用户界面设计工具

    我正在寻找一个用户界面设计工具来显示文档中可能的GUI.我不能生成代码.我知道MicrosoftVisio提供了一个功能.但有什么办法吗?您使用哪种软件可视化GUI?

返回
顶部