我正在使用https://github.com/dm77/barcodescanner扫描二维码。但它根本不扫描二维码(handleResult永远不会被调用)。当我将相机聚焦在二维码上时,它不扫描代码。
这是我的活动。
package education.qrexample;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;
import com.google.zxing.Result;
import me.dm7.barcodescanner.zxing.ZXingScannerView;
public class MainActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler{
private ZXingScannerView mScannerView;
@Override
public void onCreate(Bundle state) {
super.onCreate(state);
mScannerView = new ZXingScannerView(this); // Programmatically initialize the scanner view
setContentView(mScannerView);
mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results.
mScannerView.startCamera(); // Start camera on resume// Set the scanner view as the content view
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onPause() …Run Code Online (Sandbox Code Playgroud) 通常的URL 缩短技术使用通常 URL 字符集中的少数字符,因为不需要更多字符。典型的短 URL是http://domain/code,其中代码是整数。假设我可以使用任何基数(base10、base16、base36、base62 等)来表示数字。
QR Code有多种编码模式,我们可以优化QR Code(最小版本以获得最低密度),因此我们可以测试成对的baseX-modeY...
最好的基本模式对是什么?
两种模式适合“URL 缩短配置文件”,
我的选择是“大写 base36”和字母数字(也编码“/”、“:”等),但没有看到任何证明它始终(对于任何 URL 长度)是最好的。关于这种优化有一些好的指南或数学演示吗?
还有另一种变体,“编码模式可以根据需要在 QR 符号内混合”(维基百科)......所以,我们也可以使用
HTTP://DOMAIN/使用字母数字+change_mode+数字编码(每3位10位)对于长URL(长整数),当然,这是最好的解决方案(!),因为使用所有字符集,没有松散......是吗?
问题是这种优化(混合模式)在通常的 QRCode 图像生成器中是无法访问的......它是否可行?有一台发电机使用正确吗?
(实际的)问题是关于base和mode的最佳组合,因此我们可以将其表达为(例如Javascript)函数,
function bestBaseMode(domain,number_range) {
var dom_len = domain.length;
var urlBase_len = dom_len+8; // 8 …Run Code Online (Sandbox Code Playgroud) 当我安装应用程序时。使用 ZXingScannerView 库我得到了意外的白屏而不是相机预览。
相机的 PS 运行时权限保证在进入 QR 屏幕之前从注册屏幕打开相机。另外,我尝试从设置中打开它。这些都不起作用。
三星 Galaxy S6 操作系统:Android 6.0.1
我想从实时摄像头和图像中扫描二维码和条形码。我之前使用ZBar库来扫码。它不扫描特定类型的二维码和条形码。此外,苹果的 AVFoundation 框架在从实时摄像头扫描代码时似乎更加快速和准确。
所以我不想使用ZBar。为了扫描从图库中选取的图像中的代码,我使用 CIDetector。但 CIDetector 似乎无法扫描图像中的条形码。我已经在流 CIDetector 的整个堆栈中搜索了其他条形码类型, 本机从 UIImage 扫描条形码(即不使用 ZBar)
但我还没有找到使用 CIDetector 扫描从图库中挑选的图像条形码的方法。是否可以使用 CIDetector 从 UIImages 扫描条形码?
不建议其他第三方库。我想使用苹果的默认框架来完成这项工作。
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{
[picker dismissViewControllerAnimated:YES completion:nil];
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
CIImage *img = [[CIImage alloc]initWithImage:image];
CIDetector* detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:nil options:@{CIDetectorAccuracy:CIDetectorAccuracyHigh}];
if (detector)
{
NSArray* featuresR = [detector featuresInImage:img];
NSString* decodeR;
for (CIQRCodeFeature* featureR in featuresR)
{
NSLog(@"decode %@ ",featureR.messageString);
decodeR = featureR.messageString;
[self showAlertWithTitle:@"Success" withMessage:decodeR];
return;
}
[self showAlertWithTitle:@"Error" withMessage:@"Invalid Image"]; …Run Code Online (Sandbox Code Playgroud) 我想用 javascript 创建一个自定义的二维码,中间包含一个徽标。
我已经在 github 上找到了这个项目: https: //github.com/kaarposoft/qrlogo 但不幸的是这个脚本创建了 1000 个二维码,因此徽标的位置总是不同,除此之外这个项目并不容易处理。(没有文档等)。我以这样一种方式重写,只生成一个二维码,不超过一个,而且它使用 img 标签而不是等待上传。然而,这并不是最佳选择,因为徽标总是随机出现在二维码上,而且它是一个项目而不是一个库。
所以我想知道是否有人知道一个库或编写了一些程序来使用 javascript 从 img 标签和字符串生成二维码。
许多问候和感谢。
我将 jsQR ( https://www.npmjs.com/package/jsqr ) 与我的 Angular 应用程序一起使用来解码 QR。一般来说,我将代码从 jsQR 复制到我的应用程序中,它立即可以运行。但是,jsQR 仅当我在网络摄像头区域中持有二维码时才读取,当将代码移开时,不会捕获之前的结果。所以我想如果成功的话捕获第一个二维码并将其绑定到表单中以提交结果。我怎样才能正确地做到这一点?
到目前为止,这是我的代码:
ngOnInit() {
this.getQR();
}
getQR() {
const video = document.createElement('video');
const canvasElement: any = document.getElementById('canvas');
const canvas = canvasElement.getContext('2d');
const outputContainer = document.getElementById('output');
const outputMessage = document.getElementById('outputMessage');
const outputData = document.getElementById('outputData');
function drawLine(begin, end, color) {
canvas.beginPath();
canvas.moveTo(begin.x, begin.y);
canvas.lineTo(end.x, end.y);
canvas.lineWidth = 4;
canvas.strokeStyle = color;
canvas.stroke();
}
// Use facingMode: environment to attemt to get the front camera on phones
navigator.mediaDevices.getUserMedia({ video: { facingMode: 'environment' …Run Code Online (Sandbox Code Playgroud) 是否可以确保(深层)链接不会打开新的浏览器窗口?使用案例包括 QR 码或 NFC 标签,其中包含某种标识符以及 URL/深层链接 URL。例如 www.example.com/mypwa/game=ID
在这种情况下,想法是链接到 ID 的资产将在应用程序中可用。
当您想要重复执行此操作时,目前 Android 上的 Chrome 和 iOS 上的 Safari(作为标准浏览器)都会为每个点击的 NFC 标签打开一个新选项卡,这会让用户感到困惑。
PWA 是否可以检查它是否已在另一个选项卡中运行,如果是,则接管 URL 参数 (ID) 并使用它?
基本上,我尝试在 React 上下文中使用https://github.com/cozmo/jsQR 。但是,canvas 仅在组件安装时捕获视频流。如何使用反应画布连续流式传输视频?
import React, { Component } from "react";
import jsQR from "jsqr";
class WebcamStream extends Component {
constructor(props) {
super(props);
this.videoTag = React.createRef();
this.canvas = React.createRef();
this.tick = this.tick.bind(this);
}
componentDidMount() {
// getting access to webcam
navigator.mediaDevices
.getUserMedia({ video: { facingMode: "environment" } })
.then(stream => {
const video = this.videoTag.current;
video.srcObject = stream;
video.setAttribute("playsinline", true);
video.play();
requestAnimationFrame(this.tick);
});
}
componentDidUpdate() {}
drawLine(begin, end, color) {
const canvasElement = this.canvas.current;
const canvas = …Run Code Online (Sandbox Code Playgroud) 我可以使用 Python 生成圆形 QR 码,就像 Facebook Messenger 或 kik 使用的那样吗?我访问了很多网站,但找不到这种类型的二维码。默认情况下,Python 生成方形 QR 码,但在我的项目中我想要圆形 QR 码。是否可以创建圆形二维码?
下图是一个示例。

我一直致力于生成二维码并将其显示在屏幕上。现在我可以使用 Zxing 库生成它,该库为我提供了一个 BitMatrix,该 BitMatrix 返回 x 和 y 值的布尔值(如果该坐标需要为黑色或白色)。现在我可以使用以下代码成功生成并显示二维码:
String charset = "UTF-8";
Map<EncodeHintType, ErrorCorrectionLevel> hintMap = new HashMap<>();
hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
BitMatrix matrix = new QRCodeWriter().encode(new String(url.getBytes(charset), charset), BarcodeFormat.QR_CODE, (int) context.getResources().getDimension(R.dimen.qr_square), (int) context.getResources().getDimension(R.dimen.qr_square), hintMap);
Bitmap bitmap = Bitmap.createBitmap(matrix.getWidth(), matrix.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
paint.setColor(Color.BLACK);
for (int y = 0; y < matrix.getHeight(); y++) {
for (int x = 0; x < matrix.getWidth(); x++) {
if (!overlayRect.contains(x, y))
canvas.drawPoint(x, y, paint);
}
} …Run Code Online (Sandbox Code Playgroud) qr-code ×10
android ×3
canvas ×2
javascript ×2
angular ×1
browser ×1
cidetector ×1
ios ×1
java ×1
nfc ×1
objective-c ×1
optimization ×1
python ×1
reactjs ×1
url ×1
zxing ×1