精华内容
下载资源
问答
  • 介绍了关于基恩士【二维码读取器】技术指南的详细说明,提供基恩士的技术资料的下载。
  • { // 设置QR二维码的纠错级别(H为最高级别)具体级别信息 put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); // 设置编码方式 put(EncodeHintType.CHARACTER_SET, "utf-8"); put(EncodeHintType....

    1、前言

    ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口。Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码。
    该项目可实现的条形码编码和解码。

    2、新一个 maven建工程,引入zxing依赖

    <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>core</artifactId>
            <version>3.3.3</version>
    </dependency>
        
    <dependency>
           <groupId>com.google.zxing</groupId>
           <artifactId>javase</artifactId>
           <version>3.3.3</version>
    </dependency>
    

    3、引入辅助类MatrixToImageWriter

    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.io.OutputStream;
    
    import javax.imageio.ImageIO;
    
    import com.google.zxing.common.BitMatrix;
    
    /**
     * 二维码的生成需要借助MatrixToImageWriter类,该类是由Google提供的,可以将该类直接拷贝到源码中使用
     */
    public class MatrixToImageWriter {
        private static final int BLACK = 0xFF000000;
        private static final int WHITE = 0xFFFFFFFF;
    
        private MatrixToImageWriter() {
        }
    
        public static BufferedImage toBufferedImage(BitMatrix matrix) {
            int width = matrix.getWidth();
            int height = matrix.getHeight();
            BufferedImage image = new BufferedImage(width, height,
                    BufferedImage.TYPE_INT_RGB);
            for (int x = 0; x < width; x++) {
                for (int y = 0; y < height; y++) {
                    image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE);
                }
            }
            return image;
        }
    
        public static void writeToFile(BitMatrix matrix, String format, File file)
                throws IOException {
            BufferedImage image = toBufferedImage(matrix);
            if (!ImageIO.write(image, format, file)) {
                throw new IOException("Could not write an image of format "
                        + format + " to " + file);
            }
        }
    
        public static void writeToStream(BitMatrix matrix, String format,
                                         OutputStream stream) throws IOException {
            BufferedImage image = toBufferedImage(matrix);
            if (!ImageIO.write(image, format, stream)) {
                throw new IOException("Could not write an image of format " + format);
            }
        }
    }
    

    4、二维码生成、读取工具类Utils

    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics2D;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;
    
    import javax.imageio.ImageIO;
    
    import com.google.zxing.BarcodeFormat;
    import com.google.zxing.EncodeHintType;
    import com.google.zxing.MultiFormatWriter;
    import com.google.zxing.WriterException;
    import com.google.zxing.common.BitMatrix;
    import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
    
    
    public class Utils {
    	
    	// 默认是黑色
    	private static final int QRCOLOR = 0xFF000000; 
    	// 背景颜色
        private static final int BGWHITE = 0xFFFFFFFF;
        // 是绿色 
        public static final int QRCOLOR_GREEN = 0x05A01D; 
     
        // 二维码宽
        private static final int WIDTH = 400; 
        // 二维码高
        private static final int HEIGHT = 400; 
        
        /**
                * 用于设置QR二维码参数
         */
        private static Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>() {
            private static final long serialVersionUID = 1L;
     
            {
            	// 设置QR二维码的纠错级别(H为最高级别)具体级别信息
                put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
                // 设置编码方式
                put(EncodeHintType.CHARACTER_SET, "utf-8");
                put(EncodeHintType.MARGIN, 0);
            }
        };
    	
        /**
               * 根据传入的字符串生成一个简单的二维码
         * @param qrContent
         * @param outputFile
         * @throws WriterException
         * @throws IOException
         */
    	public static void drawSimpleQRCode(String qrContent, File outputFile) throws WriterException, IOException{
            BitMatrix bitMatrix = new MultiFormatWriter().encode(qrContent,BarcodeFormat.QR_CODE, WIDTH, HEIGHT, hints);
            MatrixToImageWriter.writeToFile(bitMatrix, "jpg", outputFile);
        }
    	
    	
    	 /**
               * 生成带logo的二维码图片
         * @param imageFile 二维码中心小图标
         * @param outputFile 生成的二维码文件
         * @param content 二维码内容
         * @param note  二维码底部文字描述
         * @param QRCOLOR 二维码背景颜色
         * @return
         */
        public static void drawImageQRCode(File imageFile, File outputFile, String content, String note,int QRCOLOR) throws Exception{
            BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
            MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
            // 参数顺序分别为:编码内容,编码类型,生成图片宽度,生成图片高度,设置参数
                BitMatrix bm = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, WIDTH, HEIGHT, hints);
     
                // 开始利用二维码数据创建Bitmap图片,分别设为黑(0xFFFFFFFF)白(0xFF000000)两色
                for (int x = 0; x < WIDTH; x++) {
                    for (int y = 0; y < HEIGHT; y++) {
                        image.setRGB(x, y, bm.get(x, y) ? QRCOLOR : BGWHITE);
                    }
                }
     
                int width = image.getWidth();
                int height = image.getHeight();
                if (imageFile.exists()) {
                    // 构建绘图对象
                    Graphics2D g = image.createGraphics();
                    // 读取Logo图片
                    BufferedImage logo = ImageIO.read(imageFile);
                    // 开始绘制logo图片
                    g.drawImage(logo, width * 2 / 5, height * 2 / 5, width * 2 / 10, height * 2 / 10, null);
                    g.dispose();
                    logo.flush();
                }
     
                // 自定义文本描述
            if (note != null && !note.equals("")) {
                // 新的图片,把带logo的二维码下面加上文字
                BufferedImage outImage = new BufferedImage(400, 445, BufferedImage.TYPE_4BYTE_ABGR);
                Graphics2D outg = outImage.createGraphics();
                // 画二维码到新的面板
                outg.drawImage(image, 0, 0, image.getWidth(), image.getHeight(), null);
                // 画文字到新的面板
                outg.setColor(Color.BLACK);
                outg.setFont(new Font("楷体", Font.BOLD, 30)); // 字体、字型、字号
                int strWidth = outg.getFontMetrics().stringWidth(note);
                if (strWidth > 399) {
                    // //长度过长就截取前面部分
                    // 长度过长就换行
                    String note1 = note.substring(0, note.length() / 2);
                    String note2 = note.substring(note.length() / 2, note.length());
                    int strWidth1 = outg.getFontMetrics().stringWidth(note1);
                    int strWidth2 = outg.getFontMetrics().stringWidth(note2);
                    outg.drawString(note1, 200 - strWidth1 / 2, height + (outImage.getHeight() - height) / 2 + 12);
                    BufferedImage outImage2 = new BufferedImage(400, 485, BufferedImage.TYPE_4BYTE_ABGR);
                    Graphics2D outg2 = outImage2.createGraphics();
                    outg2.drawImage(outImage, 0, 0, outImage.getWidth(), outImage.getHeight(), null);
                    outg2.setColor(Color.BLACK);
                    outg2.setFont(new Font("宋体", Font.BOLD, 30)); // 字体、字型、字号
                    outg2.drawString(note2, 200 - strWidth2 / 2, outImage.getHeight() + (outImage2.getHeight() - outImage.getHeight()) / 2 + 5);
                    outg2.dispose();
                    outImage2.flush();
                    outImage = outImage2;
                } else {
                    outg.drawString(note, 200 - strWidth / 2, height + (outImage.getHeight() - height) / 2 + 12); // 画文字
                    }
                    outg.dispose();
                    outImage.flush();
                    image = outImage;
                }
     
                image.flush();
     
                ImageIO.write(image, "png", outputFile); 
        }
    	
    	
    	public static void main(String[] args)throws Exception {
    	    // 1、生成一个简单的二维码(只有文字内容)
    		//File outputFile = new File("D:/test/test.jpg");
    		//drawSimpleQRCode("我爱祖国",outputFile);
    		
    		// 2、生成一个文字内容为“我爱祖国”,底部文字描述为“我爱祖国的蓝天”,中心小图标为“123.”
    		File imageFile = new File("D:/test01/123.png");
    		File outputFile = new File("D:/test01/test123.jpg");
    		String content = "我爱祖国";
    		String note = "我爱祖国的蓝天";
    		drawImageQRCode(imageFile, outputFile, content, note,BLACK);
    	}
    
    }
    
    

    二维码生成方法说明:
    1、根据字符串生成一个简单的二维码 (drawSimpleQRCode)
    在这里插入图片描述
    2、根据字符串、图片、文字描述生成一个有中心图标、底部有文字说明、背景颜色为黑色的的二维码(drawImageQRCode)
    在这里插入图片描述
    3、根据字符串、图片、文字描述生成一个有中心图标、底部有文字说明、背景颜色为绿色的二维码
    在这里插入图片描述

    5、读取二维码信息

    /**
      * 识别二维码
     */
        public static void QRReader(File file) throws IOException, NotFoundException {
            MultiFormatReader formatReader = new MultiFormatReader();
            //读取指定的二维码文件
            BufferedImage bufferedImage =ImageIO.read(file);
            BinaryBitmap binaryBitmap= new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(bufferedImage)));
            //定义二维码参数
            Map  hints= new HashMap<String,String>();
            hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
            com.google.zxing.Result result = formatReader.decode(binaryBitmap, hints);
            //输出相关的二维码信息
            System.out.println("解析结果:"+result.toString());
            System.out.println("二维码格式类型:"+result.getBarcodeFormat());
            System.out.println("二维码文本内容:"+result.getText());
            bufferedImage.flush();
        }
    
    	public static void main(String[] args)throws Exception {
    		File outputFile = new File("D:/test01/test123.jpg");
    		QRReader(outputFile);
    	}
    
    

    在这里插入图片描述

    展开全文
  • 基于基恩士的二维码读取硬件,运用vs2008开发读取软件
  • 前面的文章中介绍了扫面二维码和条形码《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 也介绍了二维码的生成以及制作一个带logo的二维码 《【iOS】CoreImage原生二维码生成(一)》 《【iOS】CoreImage...

    前面的文章中介绍了扫面二维码和条形码【iOS】AVFoundation架构下的原生二维码和条形码扫描

    也介绍了二维码的生成以及制作一个带logo的二维码

    【iOS】CoreImage原生二维码生成(一)

    【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码

    在加上现在这一篇,关于二维码的基本完了。但是想理解原理,知道CoreImage还需要大量的实践和阅读,加油!↖(^ω^)↗

    读取图片中得二维码,我是这么一个思路,往方法里面传一个图片对象,这个方法就自动读取这个图片信息。

    界面:


    #pragma mark - 读取图片中的二维码
    /**
     *  读取图片中的二维码
     *
     *  @param image 图片
     *
     *  @return 图片中的二维码数据集合 CIQRCodeFeature对象
     */
    + (NSArray *)readQRCodeFromImage:(UIImage *)image{
        // 创建一个CIImage对象
        CIImage *ciImage = [[CIImage alloc] initWithCGImage:image.CGImage options:nil];
        CIContext *context = [CIContext contextWithOptions:@{kCIContextUseSoftwareRenderer : @(YES)}]; // 软件渲染
        CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:context options:@{CIDetectorAccuracy : CIDetectorAccuracyHigh}];// 二维码识别
        // 注意这里的CIDetectorTypeQRCode
        NSArray *features = [detector featuresInImage:ciImage];
        NSLog(@"features = %@",features); // 识别后的结果集
        for (CIQRCodeFeature *feature in features) {
            NSLog(@"msg = %@",feature.messageString); // 打印二维码中的信息
        }
        return features;
    }
    结合上一篇【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码中的代码:

    //
    //  ViewController.m
    //  HGDQQRCode
    //
    //  Created by zhuming on 16/3/9.
    //  Copyright © 2016年 zhuming. All rights reserved.
    //
    
    #import "ViewController.h"
    #import "HGDQQRCodeView.h"
    
    @interface ViewController ()
    
    @property (weak, nonatomic) IBOutlet UIView *QRView;
    
    @property (weak, nonatomic) IBOutlet UILabel *msglabel;
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        [self.msglabel sizeToFit];
        // Do any additional setup after loading the view, typically from a nib.
    }
    /**
     *  生成二维码
     *
     *  @param sender sender description
     */
    - (IBAction)btnClick:(id)sender {
        [HGDQQRCodeView creatQRCodeWithURLString:@"http://blog.csdn.net/zhuming3834" superView:self.QRView logoImage:[UIImage imageNamed:@"logo"] logoImageSize:CGSizeMake(40, 40) logoImageWithCornerRadius:0];
    }
    /**
     *  读取图片中的二维码
     *
     *  @param sender sender description
     */
    - (IBAction)readBtnClick:(id)sender {
        // 截图
        UIImage *im = [HGDQQRCodeView screenShotFormView:self.view];
        // 读取图片中的二维码
        NSArray *array = [HGDQQRCodeView readQRCodeFromImage:im];
        // 显示二维码中的信息
        NSMutableString *str = [[NSMutableString alloc] init];
        [array enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
            CIQRCodeFeature *temp = (CIQRCodeFeature *)obj;
            [str appendFormat:@"地址:%@",temp.messageString];
        }];
        self.msglabel.text = str;
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end
    
    
    截图方法:

    /**
     *  截图
     *
     *  @param view 需要截取的视图
     *
     *  @return 截图 图片
     */
    + (UIImage *)screenShotFormView:(UIView *)view
    {
        UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, [UIScreen mainScreen].scale);
        [view.layer renderInContext:UIGraphicsGetCurrentContext()];
        UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return img;
    }
    生成的结果截图:



    github代码地址:请点击我


    展开全文
  • 怎样扫描二维码读出来图片信息,我只会做把文字信息读出来,读出图片该怎样做,求指教。
  • PDA开发包 二维码扫描读取

    热门讨论 2013-04-28 11:33:53
    PDA开发包 二维码扫描读取
  • 二维码生成读取

    2013-06-16 22:02:37
    二维码生成读取软件 支持中文。源码下载地。址:http://download.csdn.net/detail/zhuyuhong88/5592909
  • 利用电脑摄像头快速实时扫描读取二维码,简单,速度快,效率高,准确率高。可以快速的用在自已的软件中。
  • 用扫码枪依次扫描产品上各个零件的二维码,串口连接至PC,通过C#软件读取二维码数据后与后台EXCEL数据库查询比对,判断产品零件是否装错
  • 二维码生成读取工具

    2012-07-23 21:51:28
    这个是我用.NET开发的二维码工具,软件已经脱离SDK。 可在任何支持windows平台下运行
  • 二维码加密解密APP

    2019-03-16 11:48:54
    有了这款APP,写上你希望对方看到的...当然还可以把平时的常用密码,网站等信息生成加密二维码,保存在手机里,用时扫一扫。软件界面简单,操作容易,是所有爱简单的人的首选.支持生成二维码,解密本地二维码,扫描二维码
  • 扫描后 识别和读取所需软件、php扩展

    在这里插入图片描述
    扫描后
    在这里插入图片描述

    识别和读取所需软件、php扩展
    在这里插入图片描述

    展开全文
  • 二维码识别zbar.zip

    2020-04-12 13:21:57
    然后又继续优化了一下,发现二值化的阈值对二维码的识别非常关键,badcase通常是因为阈值不合适导致的,于是牺牲了一下性能,在识别程序中多次尝试不同阈值,最终识别效果达到了比较令人满意的结果,准确率从90%左右...
  • 二维码扫描软件

    热门讨论 2011-12-13 14:19:58
    注意:该包紧包含安装...如果解码结果为其他信息,则直接列出。 目前这个代码还不能完美引用到商业中去。需要再完善一下用户体验。不过最今本的功能都实现。 感兴趣的朋友可以下载安装试用一下。欢迎大家共同探讨。
  • 电脑上用的最好用的二维码生成识别软件,使用方便,可以根据文字,生成二维码图片,也可以截屏读取二维码信息.
  • Android通过调用摄像头识别二维码,或者自定义文本生成二维码和带logo的二维码,或者识别图片上的二维码
  • QR二维码读取

    2015-05-25 12:12:32
    对于捕获输出,ios内建了QR读取后的metadata输出,极大的方便了开发。 默认是扫描整个区域的输入视频,使用体验不是很好。 大家应该经常看到很多的QR扫描程序都是用中间一块方格区域来扫描的,这是怎么实现的呢? ...

    接上文,

     

    对于捕获输出,ios内建了QR读取后的metadata输出,极大的方便了开发。

    默认是扫描整个区域的输入视频,使用体验不是很好。

    大家应该经常看到很多的QR扫描程序都是用中间一块方格区域来扫描的,这是怎么实现的呢?

    其实很简单,方格节目自然是自己用view画出来的了,而QR处理的视频区域的话,可以用AVCaptureMetadataOutput.rectOfInterest来指定啦,从字面意思上也可以看出,就是感兴趣的区域是哪块儿。

     

    另外注意以下这个区域的指定,坐标很奇怪,不能想当然,具体查文档。

    展开全文
  • 基于Python的二维码生成与识别.pdf
  • 二维码本地识别,无需联网,软件小巧简洁 使用方法: 1、打开二维码图片 2、将工具置于二维码上方,拉伸窗口套中二维码 3、点击开始识别
  • 本案例完整可以。 原理:通过H5调用手机摄像头拍照后解码,从而识别图片中的二维码。 使用时,将整个文件复制至手机,点击html文件运行即可。 感谢zhiqiang21的分享
  • 二维码识别软件

    2013-01-04 11:45:17
    二维码识别软件 经测试好用 测试环境win7位系统
  • 电脑端二维码识别工具
  • 底下创建数据库和数据表并插入数据见我的另一篇博客:http://blog.csdn.net/fx_odyssey/article/details/72866074,本篇批量生成的二维码附带文本信息用的是单条目信息,所以添入数据表数据时仅一列就够了。...
  • 怎么生成二维码调用数据库信息。就是自己生成二维码然后调用数据库里的信息资料,就是二维码生成链接,直接链接数据库的东西,用的时候扫描下二维码就能看数据库里的信息了,要怎么弄?要买扫码软件吗?花费大不大?...
  • Malcon支持多种二维码类型,QR Code,DataMatrix ,PDF 417,RSS等等; 下边讲解一下步骤: 1、读取图片ReadImage 2、创建相对应的条码类型的句柄CreateDataCode2dModel 3、设置条码参数SetDataCode2dParam 4、查找条码...
  • 公众号生成带参二维码,只有服务号才的权限,订阅号没有。懂开发的朋友直接通过公众号提供的开发文档实现功能,也可以直接使用微号帮平台渠道二维码生成功能,实现公众号二维码参数。 1、渠道二维码生成 微号帮平台...
  • KopSoftTool 条形码二维码标签编辑打印软件,C#串口通信SerialPort 官网http://kopsoft.cn/ github源码https://github.com/williamyang1984/KopSoftTool gitee源码https://gitee.com/william_yang/KopSoftTool ...
  • 本代码实现功能为摄像头动态捕捉图像并使用zxing解码,同时NFC做M1 TAG UID读取,成功后写入mysql数据库,由于数据库非代码内构建,使用时可外部建立外部数据库及表格,具体内容见代码数据库连接部分。其中关 键技术...
  • * 读取图片中的二维码 * * @param image 图片 * * @return 图片中的二维码数据集合 CIQRCodeFeature对象 */ + (NSArray *)readQRCodeFromImage:(UIImage *)image; /** * 截图 * * @param view 需要截取的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,502
精华内容 3,800
关键字:

二维码信息读取软件