我正在使用二维码作为防伪解决方案。但二维码的问题在于,任何人都可以轻松创建我的二维码的副本,或者任何人都可以使用“二维码阅读器”移动应用程序轻松读取二维码,并可以创建与我的二维码相同的二维码。
如果我的应用程序读取这个假二维码,那么它会显示“有效产品”消息,而不是“假产品”消息。
所以我只想知道是否有任何方法可以保护二维码不被复制,或者我可以制作只能由我的移动应用程序读取而不能由任何其他“二维码阅读器”应用程序读取的二维码。
我使用 ZXing.net 制作了一个 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;
Run Code Online (Sandbox Code Playgroud)
之后我想保存图像。我正在使用此示例将图像保存在文件夹中。
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 …Run Code Online (Sandbox Code Playgroud) 我正在使用https://www.simplesoftware.io/docs/simple-qrcode使用 laravel 5 生成二维码。我想在二维码的中心添加一个徽标,因为它是可行的(根据这个插件)但是部分输出是这样的:
\n\nj\xef\xbf\xbdW\xef\xbf\xbdX\xef\xbf\xbd"(\xef\xbf\xbd@\xef\xbf\xbd\xef\xbf\xbdE 4= \xef\xbf\xbd\ xef \xbf\xbdX w\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdM\xef\xbf\xbdX\xef\xbf\xbd"(\xef\xbf\xbd@\xef\xbf\xbd\xef\xbf\xbdEG\xef\xbf\xbd\xef\xbf\xbd=5y\xef\xbf\xbd\xef\xbf\xbd\'\xef\xbf\xbd\xef\xbf \xbdwX\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdI\xef\xbf\xbdC\xef\xbf\xbd\xef\xbf\xbdEP,\xef\xbf\xbdbu\xef\xbf \xbd {?\xef\xbf\xbd\xef\xbf\xbd\xdd\xbb\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xc3\x92\xef\xbf\xbd\xef\xbf\xbd"(\xef\xbf\xbd@\xef\xbf\xbd\xef\xbf\xbdE P,\xef\xbf\xbd\xef\xbf\ xbdWX-\xef\xbf\xbdVm\\VWF\xef\xbf\xbd\xef\xbf\xbdqb\xef\xbf\xbd\xef\xbf\xbd\'B\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd@\xef\xbf\xbdX\xef\xbf\xbd"(\xef\xbf\xbd@\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf \xbdT\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdL\xef\xbf\xbd\xef\xbf\xbdM \xef\xbf\xbd\xef\xbf\xbd\xea\xbd\xbe\xef\xbf\xbdQ\xef\xbf\xbdm\xef\xbf\xbd#- r\xef\x98\x88\xef\xbf\ xbdh\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdly " #{\xef\xbf\xbd\xef\xbf\xbd\xef\xbf \xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdbQe_\xef\xbf\xbd\xef\xbf\xbdZ]]\xef\xbf \xbd\xef\xbf\xbdko\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdG7EDT\xef\xbf\xbdi4TH\xef\xbf\xbd,}\xef\xbf \xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdt\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xc5\xb7\xef\xbf\xbdn\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf \xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdQ\xef\xbf\xbd\xe5\x95\xb5\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbdR\xef\xbf\xbdF\xef\xbf\xbdm\xef\xbf\xbd \xef\xbf\xbd(\xef\xbf\xbd\xef\xbf\xbd| x\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \ xef\xbf\xbdny%\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdUQU\xef\xbf\xbd5)U\xcb\xbe+\xef \xbf\xbd\xef\xbf\xbd\xef\xbf\xbdlUX\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdk\xef\xbf\xbd\xef\xbf\xbdL=\xef\ xbf\xbd\xef\xbf\xbdO\xef\xbf\xbd\xef\xbf\xbdkyemv\xef\xbf\xbdX\xef\xbf\xbd\xef\xbf\xbdh\xef\xbf\xbdD\xef\xbf\ xbdL$s>\xef\xbf\xbd L\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdL\xef\xbf\xbd$\xef\xbf\xbd9\xef \xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd$\xef\xbf\xbd\xef\xbf\xbd(\xef \xbf\xbd\\a\xef\xbf\xbd\xe5\xb9\x82 \xef\xbf\xbd\xef\xbf\xbd\xc5\xaf\xef\xbf\xbdU\xef\xbf\xbdqK%\xef \xbf\xbd\xef\xbf\xbdD\xef\xbf\xbdP\xef\xbf\xbd\xef\xbf\xbdN\xef\xbf\xbd\xef\xbf\xbdD3\xef\xbf\xbd\xef\xbf \xbd\xef\xbf\xbd$K\xef\xbf\xbd\xef\xbf\xbd\xca\xa3\xef\xbf\xbd\xef\xbf\xbd#\xef\xbf\xbd\xd5\x95\ xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdi2s\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdnT\xef\xbf\xbd\xef\ xbf\xbda\xef\xbf\xbdI\xe3\xb2\x8e\xef\xbf\xbd\xef\xbf\xbd7+)AG\xef\xbf\xbdH\xef\xbf\xbd>\xef\xbf\xbd;\xef\xbf\xbd$\xef\xbf\xbd\xef\xbf\xbdKMT\xef\xbf\xbd\xef\xbf \xbd\xef\xbf\xbdJ\xef\xbf\xbd<|\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdp\xef\xbf\xbd\xef\xbf \xbd;\xef\xbf\xbdK7\xef\xbf\xbd\xef\xbf\xbd!\xef\xbf\xbd\xef\xbf\xbd <.*\'N\xef\xbf\xbd\xef\xbf \xbd\xef\xbf\xbd7\xef\xbf\xbd\xef\xbf\xbd>\xef\xbf\xbd%\xef\xbf\xbd\xc9\xaes:AMLD-\xef\xbf\xbd\xef\ xbf\xbd\xef\xbf\xbd\xef\xbf\xbd3J\xef\xbf\xbd\xe4\x83\xad?\xef\xbf\xbd
这是我的代码:
\n\n{!! QrCode::format(\'png\')->merge(\'https://www.seeklogo.net/wp-content/uploads/2016/09/facebook-icon-preview-1.png\', .3, true)->size(200)->generate(\'http://www.simplesoftware.io\'); !!}\nRun Code Online (Sandbox Code Playgroud)\n\n任何有这方面经验的人请帮助我,非常感谢您的帮助!:)
\n\n谢谢。
\n下面的图像编辑 是原始图像的预处理序列。1. 原始图像 -> 2. 模糊 xn 次以使 qrcode 位置显着 -> 3. 裁剪原始图像,使用 blob 从第二步中提取位置 -> 4. 锐化和阈值 -> 5. 检查 qrcode 的三个方块 -> 6 .进行额外的转换,例如旋转 ->(最终图像)(具有调整大小分辨率的裁剪图像。)
老问题 我正在尝试从原始图像重建二维码。正如你所看到的,照片的二维码已损坏,因此我使用 Aforge 库使用 blob 从图像中检测 3 个正方形。现在我不明白的是从这些信息生成二维码的逻辑。在技术上是否可以用给定的信息重建二维码?
我是 ionic 新手,所以我对 Ionic 框架不太了解,我正在尝试实现 Cordova-plugin-QR 扫描仪,但它在我的控制台上显示以下错误。
这是我的代码
import { Component, OnInit } from '@angular/core';
import { QRScanner, QRScannerStatus } from '@ionic-native/qr-scanner/ngx';
@Component({
selector: 'app-notification',
templateUrl: './notification.page.html',
styleUrls: ['./notification.page.scss'],
})
export class NotificationPage implements OnInit {
constructor(private qrScanner: QRScanner ) {
}
ngOnInit(){
this.qrScanner.prepare()
.then((status: QRScannerStatus) => {
if (status.authorized) {
// camera permission was granted
// start scanning
let scanSub = this.qrScanner.scan().subscribe((text: string) => {
console.log('Scanned something', text);
this.qrScanner.hide(); // hide camera preview
scanSub.unsubscribe(); // stop scanning
});
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试从用户选择的图像中检测条形码。我能够从图像中检测到二维码,但无法从图像中找到与条形码扫描相关的任何内容。我用来从图像中检测二维码的代码如下:
func detectQRCode(_ image: UIImage?) -> [CIFeature]? {
if let image = image, let ciImage = CIImage.init(image: image){
var options: [String: Any]
let context = CIContext()
options = [CIDetectorAccuracy: CIDetectorAccuracyHigh]
let qrDetector = CIDetector(ofType: CIDetectorTypeQRCode, context: context, options: options)
if ciImage.properties.keys.contains((kCGImagePropertyOrientation as String)){
options = [CIDetectorImageOrientation: ciImage.properties[(kCGImagePropertyOrientation as String)] ?? 1]
}else {
options = [CIDetectorImageOrientation: 1]
}
let features = qrDetector?.features(in: ciImage, options: options)
return features
}
return nil
}
Run Code Online (Sandbox Code Playgroud)
当我进入它的文档时,CIDetectorTypeQRCode它说
/* Specifies a detector type for …Run Code Online (Sandbox Code Playgroud) “在选择安全性并在 Android Studio 中输入密码后,我想为给定的 Wifi SSID 生成二维码。” 这个问题的标题几乎概括了我的问题。我真的很感激任何能够为我指明正确方向的人。
我有一个 Nuxt.js 项目,在其中尝试使用qrcode-scanner 库, 我按照步骤进行全局注册。
我在插件文件夹中创建了一个js文件并添加以下代码
import Vue from "vue";
import VueQrcodeReader from "vue-qrcode-reader";
Vue.use(VueQrcodeReader);
Run Code Online (Sandbox Code Playgroud)
它看起来很简单,但我的应用程序崩溃并且从未加载。有人遇到过这个问题吗?
我已将Android应用程序上传到谷歌播放,我想为它生成二维码.有什么建议?
我的问题是:
但是我已经从 zxing 库中制作了 QR 扫描仪。我的意思是。如何从图像扫描二维码(不形成相机)