精华内容
下载资源
问答
  • 易语言生成二维码模块源码,生成二维码模块,快速生成二维码,取位图图象顶点
  • 资源介绍:易语言生成二维码模块源码资源作者:三叶自学网资源界面:资源下载:
  • STM32F103ZET6控制二维码模块GM65(扫描数据为123任意排列组合,可自己修改需要扫描内容),不懂加
  • 摘要: 详解 Python qrcode 二维码模块。 项目地址 https://github.com/lincolnloop/python-qrcode 声明 import qrcode 使用 QRCode 方法   参数解释 1、version:控制二维码的大小,取值范围从1...

    原文链接

    摘要: 详解 Python qrcode 二维码模块。

    项目地址

    https://github.com/lincolnloop/python-qrcode
    

    声明

    import
     qrcode
    

    使用

    QRCode 方法

     

    image

    参数解释

    1、version:控制二维码的大小,取值范围从1到40。取最小值1时,二维码大小为21*21。取值为 None (默认)或者使用fit=true参数(默认)时,二维码会自动调整大小。

    2、error_correction:控制二维码纠错级别。

    ERRORCORRECTL:大约7%或者更少的错误会被更正。
    ERRORCORRECTM:默认值,大约15%或者更少的错误会被更正。
    ERRORCORRECTQ:大约25%或者更少的错误会被更正。
    ERRORCORRECTH:大约30%或者更少的错误会被更正。
    3、box_size:控制二维码中每个格子的像素数,默认为 10。

    4、border:控制二维码四周留白包含的格子数,默认为4。

    5、image_factory:选择生成图片的形式,默认为 PIL 图像。

    6、mask_pattern:选择生成图片的的掩模。

    方法属性解释

    常用方法:

    1、add_data(str,optimize=20):添加要转换的文字到data参数;如果使用了optimize优化参数,数据将被拆分为多个块来进行优化,以找到一个长度至少为这个值的足够简洁的方式来生成二维码。设置为“0”以避免优化。

    2、make(fit=True):当fit参数为真或者没有给出version参数时,将会调用bestfit方法来找到适合数据的最小尺寸。如果没有设置maskpattern,将会调用bestmaskpattern方法来找到找到最有效的掩模图案。最后将这些数据传递给makeImpl方法来生成二维码。与qrcode本体的make方法不一样的是,这个方法没有任何返回值。

    3、makeimage(fillcolor=None, backcolor=None,imagefactory=None):创建二维码的图像并返回,默认为 PIL 图像。如果要让二维码有颜色,可以在这里设置。

    4、clear:清空数据

    5、get_matrix:返回二维码数组。

    6、print_ascii(out=None, tty=False, invert=False):这个方法就比较有趣了,可以用字符画的形式来输出二维码,但是扫的时候一般都扫不出来。

     

    image

    其中的invert参数是决定是否反转颜色的参数,默认为假,如果为真的话会这样:

     

    image

    其他方法:

    1、bestfit(start=self.version):找到适合数据所需的最小尺寸。

    2、bestmaskpattern():找到最有效的掩模图案。

    3、makeImpl(test, maskpattern):生成二维码的直接函数

    4、mapdata:(内部函数,无需了解)

    5、printtty(out=None):用TTY颜色输出二维码,如果没有给出out参数,会使用sys.stdout。

    6、setuppositionadjustpattern:(内部函数)

    7、setuppositionprobepattern:(内部函数)

    8、setuptimingpattern:(内部函数)

    9、setuptypeinfo:(内部函数)

    10、setuptypenumber:(内部函数)

    属性:

    1、border:

    2、boxsize:

    3、datacache:

    4、datalist:

    5、errorcorrection:

    6、imagefactory:

    7、maskpattern:

    8、modules:

    9、modules_count:

    10、version:

    生成 SVG 图像

    qrcode可以生成三种不同的svg图像,一种是用路径表示的svg,一种是用矩形集合表示的完整svg文件,还有一种是用矩形集合表示的svg片段。第一种用路径表示的svg其实就是矢量图,可以在图像放大的时候可以保持图片质量,而另外两种可能会在格子之间出现空隙。

    这三种分别对应了svg.py中的SvgPathImage、SvgImage和SvgFragmentImage类。在调用qrcode.make函数或者实例化QRCode时当作image_factory参数的值传入就可以了。

     

    image

    生成 PNG 图像

    执行命令安装pymaging相关模块:

     

    image

    然后给image_factor参数传入qrcode.image.pure.PymagingImage就可以生成PNG图片了。

     

    image

    这是作者推荐的方式,但是我个人认为,完全没有必要这么麻烦,直接用默认的 PIL 就可以获取 PNG 图片了,例子看下文。

    make 方法

    make方法实际上就是在内部调用了QRCode(要转换的文本).make_image(),最后(默认)返回了一个PIL图像对象。

    # 显示图片qrcode.make("hello world!").show()
    # 保存 PNG 图片qrcode.make("hello world!").save('hello.png')
    

    run_example 方法

    生成一个作者项目网站地址的二维码并显示出来。

    原文发布时间为:2018-07-24
    本文作者:以茄之名
    本文来自云栖社区合作伙伴“ Python中文社区”,了解相关信息可以关注“ Python中文社区

    展开全文
  • 利用该代码可以实现为一个页面添加一个二维码模块,用手机扫描即可进入相关网页
  • 由于项目需要用到二维码模块,因而在Android平台下写了一个测试程序用于调试二维码模块。开发中使用串口与二维码模块通信,接口使用的是FriendlyARM的JIN以及共享库friendlyarm-hardware.so,

    由于项目需要用到二维码模块,因而在Android平台下写了一个测试程序用于调试二维码模块。开发中使用串口与二维码模块通信,由于要调用到底层文件,又不想自己写接口函数,接口使用的是FriendlyARM的JIN以及共享库friendlyarm-hardware.so。本来需要使用一个按键控制二维码模块扫描,但是设备上不好外接按键,所以用一个GPIO口模拟扫描按键,代码不是很多,经过测试可以读出条形码和二维码。


    package com.example.serial;
    
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.app.Activity;
    import android.text.method.ScrollingMovementMethod;
    import android.util.Log;
    import android.view.Menu;
    import android.view.View;
    import android.view.WindowManager;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;
    import com.friendlyarm.AndroidSDK.HardwareControler;
    import com.hardware.Hardware;
    
    public class MainActivity extends Activity {
    
        TextView recvView;
        private Button stopButton;
        private Button recvButton;
        private Button scanButton;
        private Button cancelButton;
    
        private int fd = 0;
    
        String thread = "readThread";
        String choosed_serial = "/dev/s3c2410_serial2";//设置串口号
        int choosed_buad = 9600;//设置波特率
        byte[] buf= new byte[100];
        int count=0;
        Hardware gpio;//GPIO控制
        
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
                    
            gpio = new Hardware();
            System.out.println("openGPIO:"+gpio.openGPIO());
            gpio.setGPIO(1, 0);//通过设置GPIO控制模块电源
            gpio.setGPIO(0, 1);//通过设置GPIO控制模块扫描
          
            fd = HardwareControler.openSerialPort(choosed_serial,choosed_buad, 8, 1);//打开串口
    
            if (fd != -1) 
            {
    
                Toast.makeText(getApplicationContext(), "成功打开串口:"+choosed_serial, 1).show();
    
            }
            else 
            {
                Toast.makeText(this,"无法打开串口", 1).show();
    
            }
    
            stopButton = (Button)findViewById(R.id.stopButton);
            stopButton.setText("关闭");
    
            stopButton.setOnClickListener(new ClickEvent());
            
            scanButton = (Button)findViewById(R.id.scanButton);
            scanButton.setText("扫描");
            scanButton.setOnClickListener(new OnClickListener() {
    
                public void onClick(View arg0) {
    
                    // TODO Auto-generated method stub
                	gpio.setGPIO(0, 1);
                }
    
            });
            
            cancelButton = (Button)findViewById(R.id.cancel);
            cancelButton.setText("取消");
            cancelButton.setOnClickListener(new OnClickListener() {
    
                public void onClick(View arg0) {
    
                    // TODO Auto-generated method stub
                	gpio.setGPIO(1, 1);
                }
    
            });
    
            recvButton = (Button)findViewById(R.id.sendButton);//发送消息
            recvButton.setText("接收数据");
    
            recvButton.setOnClickListener(new OnClickListener() {
    
                public void onClick(View arg0) {
    
                    // TODO Auto-generated method stub
                	
                    new readThread().start();//开始串口的监听线程
                }
    
            });
    
            recvView = (TextView)findViewById(R.id.commucation_window);
    
    
        }
    
    
        public class ClickEvent implements Button.OnClickListener//退出
    
        {
    
            public void onClick(View arg0) {
    
                // TODO Auto-generated method stub
            	 gpio.setGPIO(1, 0);
                android.os.Process.killProcess(android.os.Process.myPid());
    
                System.exit(0);
    
            }
    
        }
        public static final String bytesToHexString(byte[] bArray) {
            StringBuffer sb = new StringBuffer(bArray.length);
            String sTemp;
            for (int i = 0; i < bArray.length; i++) {
             sTemp = Integer.toHexString(0xFF & bArray[i]);
             if (sTemp.length() < 2)
              sb.append(0);
             sb.append(sTemp.toUpperCase());
            }
            return sb.toString();
        }
    
        Handler handler = new Handler() {
    
            public void handleMessage(Message msg) {
    
            	byte[] buf= new byte[100];
            	if(count%10==0){
            		recvView.setText(null);
            	}
    	                int len = HardwareControler.read(fd, buf, 100);
    	                System.out.println("len:"+len);
    	                System.out.println(bytesToHexString(buf)+"\n");
    	                System.out.println(buf[0]+"\n");
    
    	                byte[] newbuf = new byte[len];
    	                for(int i=0;i<len;i++){
    	                	newbuf[i]=buf[i];
    	                }
    		                String string = new String(newbuf, 0, len);
    	
    		                if(string!=null){
    	
    		                	gpio.setGPIO(1, 1);
    		                	recvView.append(bytesToHexString(newbuf)+"\n");
    			                count++;
    			                System.out.println(count);
    	                
    		                }
    		        Log.d(thread,string);
    	                new readThread().start();//处理完消息后立即开启读取线程
            }
    
        };
        
    
        class readThread extends Thread//监听串口信息线程
        {        
            public void run()
            {
                Message msg = new Message();
    
                HardwareControler.setLedState(0, 0);
    	            if (HardwareControler.select(fd,5, 0)==1) {            
    	
    	                try {
    						Thread.sleep(100);
    					} catch (InterruptedException e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					}
    			System.out.println(">>>>>>>>>sendMessage");
    	            	handler.sendMessage(msg);
    	            	System.out.println("<<<<<<<<<<sendMessage");
    	            }
    	            else
    	            {
    	            	new readThread().start();
    	            }
            }
    	}
    
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.main, menu);
    		return true;
    	}
    
    }


    展开全文
  • 7D1F586E-602B-41FA-8C03-36FBC9F16506.png ...定义一个扫描二维码模块 模块名称 camera var camera = weex.requireModule('camera') API scanCode(callback) camera.scanCode(res=&gt;{ this....
        
    1594482-02ece466dc91d662.png
    7D1F586E-602B-41FA-8C03-36FBC9F16506.png

    本节学习目标

    定义一个扫描二维码模块

    模块名称 camera

    var camera = weex.requireModule('camera')
    

    API

    scanCode(callback)

    camera.scanCode(res=>{
        this.qr = res.data;
    })
    

    参数

    res.result值为'success'或者fail
    res.data 识别出来二维码的值

    接下来 我们就定义一个这样的模块

    • 第一步

    创建一个 类WXCameraModule


    1594482-076a760ea1f1248c.png
    796C7412-12AA-47F4-9B43-E7736D196296.png
    • 第二步 实现协议
    @interface WXCameraModule :NSObject<WXModuleProtocol>
    

    只需要在.m文件中实现下面的协议

    @synthesize weexInstance;
    
    • 第三步

    添加宏WX_EXPORT_METHOD, 它可以被weex识别,它的参数是 JavaScript调用 module指定方法的参数

    WX_EXPORT_METHOD(@selector(scanCode:))
    

    实现这个方法

    -(void)scanCode:(CallBlock)callback{
      XJScanViewController *scanVC= [[XJScanViewController alloc]init];
      scanVC.callback = callback;
       [self.weexInstance.viewController.navigationController presentViewController:scanVC animated:true completion:nil];
    }
    

    注意callback 回调函数的参数可以是 String 或者Map

    • 第四步

    完成上面的步骤 我们的模块算是定义好了,接下来只需要在注册一下即可在js中调用

    WXSDKEngine.registerModule("camera" ,with: WXCameraModule.self)
    
    展开全文
  • qrcode模块安装 运行命令行工具(cmd),使用pip安装工具分别安装qrcode。 pip install qrcode 先来个简单的例子 import qrcode # 二维码内容 data = "hello world" # 生成二维码 img = qrcode....

    qrcode模块安装

    运行命令行工具(cmd),使用pip安装工具分别安装qrcode。

    pip install qrcode 

     

    先来个简单的例子

    import qrcode
    
    # 二维码内容
    data = "hello world"
    # 生成二维码
    img = qrcode.make(data=data)
    # 直接显示二维码
    img.show()
    # 保存二维码为文件
    # img.save("hello.jpg")

    效果

     

    我们来修改配置等

    import qrcode
    
    # 二维码内容
    data = "hello world"
    
    qr = qrcode.QRCode(
        version=2,
        error_correction=qrcode.constants.ERROR_CORRECT_L,#二维码的纠错范围
        box_size=10,# 每个点(方块)中的像素个数
        border=4#二维码距图像外围边框距离,默认为4,而且相关规定最小为4
    )
    
    qr.add_data(data)
    qr.make(fit=True)
    
    # 生成二维码
    img = qr.make_image()
    # 直接显示二维码
    img.show()
    # 保存二维码为文件
    # img.save("hello.jpg")

     

     安装pyzbar

    pip install pyzbar

    来测试

    import pyzbar.pyzbar as pyzbar
    from PIL import Image,ImageEnhance
    
    
    image = "hello.jpg"
    
    img = Image.open(image)
    
    #img = ImageEnhance.Brightness(img).enhance(2.0)#增加亮度
    
    #img = ImageEnhance.Sharpness(img).enhance(17.0)#锐利化
    
    #img = ImageEnhance.Contrast(img).enhance(4.0)#增加对比度
    
    #img = img.convert('L')#灰度化
    
    img.show()
    
    barcodes = pyzbar.decode(img)
    
    for barcode in barcodes:
        barcodeData = barcode.data.decode("utf-8")
        print(barcodeData)

     

    测试一下

     

     

    python3 + opencv +pyzbar 摄像头检测二维码并获取二维码内容

    https://blog.csdn.net/zx66zx/article/details/82785334

    # coding:utf8
     
    import cv2
    import pyzbar.pyzbar as pyzbar
     
    def decodeDisplay(image):
        barcodes = pyzbar.decode(image)
        for barcode in barcodes:
            # 提取条形码的边界框的位置
            # 画出图像中条形码的边界框
            (x, y, w, h) = barcode.rect
            cv2.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2)
     
            # 条形码数据为字节对象,所以如果我们想在输出图像上
            # 画出来,就需要先将它转换成字符串
            barcodeData = barcode.data.decode("utf-8")
            barcodeType = barcode.type
     
            # 绘出图像上条形码的数据和条形码类型
            text = "{} ({})".format(barcodeData, barcodeType)
            cv2.putText(image, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX,
                        .5, (0, 0, 125), 2)
     
            # 向终端打印条形码数据和条形码类型
            print("[INFO] Found {} barcode: {}".format(barcodeType, barcodeData))
        return image
     
     
    def detect():
     
        camera = cv2.VideoCapture(0)
     
        while True:
            # 读取当前帧
            ret, frame = camera.read()
            # 转为灰度图像
            gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
            im=decodeDisplay(gray)
     
            cv2.waitKey(5)
            cv2.imshow("camera", im)
     
        camera.release()
        cv2.destroyAllWindows()
     
     
    if __name__ == '__main__':
        detect()

     

    转载于:https://www.cnblogs.com/libra13179/p/11114432.html

    展开全文
  • 相关模块: pip install git+git://github.com/ojii/pymaging.git#egg=pymaging pip install git+git://github.com/ojii/pymaging-png.git#egg=pymaging-png 然后给 image_factor 参数传入 qrcode.image.pure....
  • 网上关于zxing ios 的组装博客很多,按照博客的步骤走了一遍。...由于以前都是做android开发,现在突然接触ios开发,才不过4天,就要做二维码扫描的模块,所以接触起来比较陌生,也是第一次接触xcode。所以一路...
  • 这是一个系列,我们将其命名为android最佳实践,如果你还没有看之前的文章: Android最佳实践(一) ...上一节,我们编写了contact模块,极大的简化了联系人的获取,而且提供了两种方式,一种是通过手机内置app获...
  • 二维码模块的音频播放和震动: 修改上面AudioTest项目: MainActivity.java如下: package com.zj.audiotest; import android.app.Activity; import android.content.res.AssetFileDescriptor; import ...
  • 用Python的qrcode包来生成二维码很简单一、前期准备:pip install qrcodeqrcode 依赖... 简单生成二维码:import qrcode //模块导入//调用qrcode的make()方法传入url或者想要展示的内容img = qrcode.make('http://ww...
  • qrcode 模块可以便捷地生成二维码,只是生成的二维码图像大小无法编辑。 1 import qrcode 2 qr = qrcode.QRCode( 3 version=1, 4 error_correction=qrcode.constants.ERROR_CORRECT_L, 5 box_size=100...
  • GM65二维码识别模块简要设置。GM65串口通讯设置,波特率设置。
  • Python使用QRCode模块生成二维码QRCode官网https://pypi.python.org/pypi/qrcode/5.1简介python-qrcode是个用来生成二维码图片的第三方模块,依赖于 PIL 模块和 qrcode 库。简单用法import qrcodeimg = qrcode.make...
  • 关于倍加福二维码识别模块的使用手册,包含了关于如何使用,怎么发送指令,以及怎么解析出坐标和角度。
  • Quirc二维码识别模块

    2020-06-29 16:56:30
     下载下来的文件主要有demo、tests、lib,由于自己对二维码识别过程不是十分了解,本文主要对demo的一部分进行了分析。  首先是main()函数。这里使用了一系列命令行参数,主要是跑了run_demo()这个函数。   ...
  • 易语言二维码生成模块(无需联网)简单易用 生成效率高
  • 2. 可为每一个页面,包含每一个产品页面以及非产品页面生成二维码; 3. 可放置于页面的上下左右栏位; 安装方法: 将解压缩后将upload内的admin及catalog目录复制到您的网站根目录即可。 使用方法: 在...
  • APIcoud 手机二维码or条码 生成与扫描模块 刚接触APIcoud 的时候觉得很多模块真的好难,初次接触二维码的时候...官方文档里面的使用方法里面,难免有些不易懂,本文教你如何愉快的开发二维码模块。...
  • QR二维码生成模块1.4,修正矢量格式、字符画等错误QR编码 └生成 └取宽度 └取高度 └取位图数据 └画图 └擦除 └取位图句柄 └保存 └是否生成 └是否画图 └复制 └取文本 └取编码 └取纠错级别...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,817
精华内容 726
关键字:

二维码模块