精华内容
下载资源
问答
  • 生成二维码,解析二维码。 通过C#程序,生成相关的二维码,和解析二维码,可以把解析的结果放入剪切板中,可以保存解析的结果。
  • 解析二维码

    2017-11-01 10:48:47
    这是一个解析二维码的demo,需要依赖zxing.jar包,资源中已经包含了。
  • js解析二维码

    2019-02-12 16:05:34
    该js文件用于js识别图片二维码解析网址代码,解析二维码方法请看:https://blog.csdn.net/qq_31150171/article/details/87094177
  • Java解析二维码

    千次阅读 2019-02-21 22:12:01
    最近用到了解析二维码,生成二维码,这里将解析二维码的简单介绍分享在这里啦

    最近用到了解析二维码,生成二维码,这里将解析二维码的简单介绍分享在这里啦?。
    用到的jar
    com.google.zxing.core-3.3.3,com.google.zxing.javase-3.3.3
    版本(3.2.1)也可以,这两个在测试都时候都用到了……主要是走弯路踩到了他们?

    生成简单二维码:(想要复杂二维码的猿可以自行丰富哈)

    	int width=300;
        int height=300;
        String format="png";
        String contents="http://www.taobao.com/help/getip.php";//获取IP(淘宝)获取地址成功
        String filepath="D:/QRCodeTest/picture003.png";//生成二维码路径
        HashMap map=new HashMap();
        map.put(EncodeHintType.CHARACTER_SET, "utf-8");
        map.put(EncodeHintType.ERROR_CORRECTION,ErrorCorrectionLevel.M);
        map.put(EncodeHintType.MARGIN, 0);
        try {
            BitMatrix bm = new MultiFormatWriter().encode(contents, BarcodeFormat.QR_CODE, width, height);
            Path file=new File(filepath).toPath();
            MatrixToImageWriter.writeToPath(bm, format, file);
        } catch (WriterException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    

    三种代码情况:
    第一种:黑白色二维码 最普通

    		BufferedImage image=ImageIO.read(new File(filepath));
            BinaryBitmap bb=new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image)));
            HashMap map =new HashMap();
            map.put(DecodeHintType.CHARACTER_SET, "utf-8");
            Result result = new MultiFormatReader().decode(bb,map);
            System.out.println("解析结果:"+result.toString());
            System.out.println("二维码格式类型:"+result.getBarcodeFormat());
            System.out.println("二维码文本内容:"+result.getText());
    

    第二种:黑白色有 logo的二维码

    		BufferedImage image=ImageIO.read(new File(filepath));
            BinaryBitmap bb=new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image)));
            HashMap map =new HashMap();
            map.put(DecodeHintType.CHARACTER_SET, "utf-8");
            map.put(DecodeHintType.TRY_HARDER, Boolean.TRUE);
            map.put(DecodeHintType.PURE_BARCODE, Boolean.TRUE);
            Result result = new MultiFormatReader().decode(bb,map);
            System.out.println("解析结果:"+result.toString());
            System.out.println("二维码格式类型:"+result.getBarcodeFormat());
            System.out.println("二维码文本内容:"+result.getText());
    

    代码差异:比第一种多了两行代码
    map.put(DecodeHintType.TRY_HARDER, Boolean.TRUE);
    map.put(DecodeHintType.PURE_BARCODE, Boolean.TRUE);

    第三种:彩色有 logo的二维码,(可能还有不同程度的透明图层)

    (先将彩色转为黑白色,提高解析成功率)

    public static void changeImge(String filepath) {
        try {
            File f =new File(filepath);
            Image image = ImageIO.read(f);
            int srcH = image.getHeight(null);
            int srcW = image.getWidth(null);
            BufferedImage bufferedImage = new BufferedImage(srcW, srcH,BufferedImage.TYPE_3BYTE_BGR);
            bufferedImage.getGraphics().drawImage(image, 0,0, srcW, srcH, null);
            bufferedImage=new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY),null).filter (bufferedImage,null);
            FileOutputStream fos = new FileOutputStream(f);
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);
            encoder.encode(bufferedImage);
            fos.close();
            // System.out.println("转换成功...");
        } catch (IOException e) {
            e.printStackTrace();
            throw new IllegalStateException("图片转换出错!", e);
        }
    }
    

    解析二维码

    		BufferedImage image=ImageIO.read(new File(filepath));
    		LuminanceSource source = new BufferedImageLuminanceSource(image);
            BinaryBitmap bb=new BinaryBitmap(new HybridBinarizer(source));
            HashMap map =new HashMap();
            map.put(DecodeHintType.CHARACTER_SET, "utf-8");
            Result result = new MultiFormatReader().decode(bb,map);
            System.out.println("解析结果:"+result.toString());
            System.out.println("二维码格式类型:"+result.getBarcodeFormat());
            System.out.println("二维码文本内容:"+result.getText());
    

    代码差异:解读二维码及基本信息
    (自认为是二维码从图片信息到字符信息的初步转化,描述得有点模糊,希望有路过的大侠有知道的在评论区科普一下)
    第一种和第二种:
    BinaryBitmap bb=new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image)));
    第三种:
    LuminanceSource source = new BufferedImageLuminanceSource(image);
    BinaryBitmap bb=new BinaryBitmap(new HybridBinarizer(source));

    展开全文
  • qrcode解析二维码

    2018-06-21 14:11:58
    在QRcode的压缩包里面包含两个文件夹,分别对应着生产二维码的demo和解析二维码的demo,用户可以根据自己的实际情况来选择使用或者改写插件。
  • Qt实现解析二维码源码分享,Qt 二维码解析工具,Qt解析二维码实战。
  • java生成二维码、解析二维码
  • java实现生成二维码和解析二维码,只需要传入二维码图片或者传入要生成的二维码数据,就可以解析或生成对应的信息
  • 二维码工具可解析、生成二维码,可以生成普通无图二维码,也可生成带图标的二维码;且支持二维码读取解析、名片二维码、电话二维码、WIFI热点二维码以及短信二维码等;功能简单实用 。
  • Java解析二维码与生成二维码 public class JieDuErWerMa { /** * 解析二维码 * @param path :二维码路径 */ public static void ErWeiCode(String path){ try { //拿到二维码,用File...

    Java解析二维码与生成二维码

    public class JieDuErWerMa {
    	/**
    	 * 解析二维码
    	 * @param path :二维码路径
    	 */
    	 public static void ErWeiCode(String path){		
    		 
    		 try {
    			 //拿到二维码,用File接收文件
    			File file=new File(path);
    			//通过ImageIO来读取文件存储到内存
    			BufferedImage image=ImageIO.read(file);
    			//创建一个对象,将image交给他解析
    			BufferedImageLuminanceSource source=new BufferedImageLuminanceSource(image);
    			//由于计算机是由二进制建立的,so 需要转为二进制对象
    			HybridBinarizer nBinarizer=new HybridBinarizer(source);
    			BinaryBitmap bitmap=new BinaryBitmap(nBinarizer);
    			//解决乱码问题
    			HashMap hashMap=new HashMap<>();
    			hashMap.put(EncodeHintType.CHARACTER_SET, "UTF-8");
    			//解析
    			MultiFormatReader reader=new MultiFormatReader();
    			//接收解析后的结果
    			Result result=reader.decode(bitmap,hashMap);
    			
    			//输出
    			System.out.println("二维码的格式类型:  " + result.getBarcodeFormat());
    			System.out.println("二维码的内容:          "+ result.getText()); 
    			
    		} catch (IOException e) {
    			// TODO 自动生成的 catch 块
    			e.printStackTrace();
    		}
    		  
    		 
    	 }
    
    	/**
    	 * 生成二维码
    	 * @param string
    	 * @throws Exception 
    	 */
    	public static void CreateErWeiCode(String str) {
    		try {
    			 //设置二维码的宽高
    			int  width=300;
    			int  height=300;
    			//设置二维码的内容
    			String content=str;	
    			//设置二维码的格式
    			String format = "png"; 
    			//解决编码乱码问题:因为 JSP 默认取到的是iso-8859-1的,所以要先按iso-8859-1取出来,再转成utf-8
    			String contents=new String(content.getBytes("UTF-8"),"ISO-8859-1");
    			//定义二维码参数EncodeHinType 在我们的jar中已定义好的了
    		    HashMap<EncodeHintType,Comparable> map=new HashMap();
    		    //设置字符集编码,防止内容存在汉字乱码
    		    map.put(EncodeHintType.CHARACTER_SET, "utf-8"); 
    			BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height,map);
    			File outputFile = new File("C:\\Users\\Administrator\\Desktop\\new.png"); 
    			
    			MatrixToImageWriter.writeToFile(bitMatrix, format, outputFile);
    		} catch (Exception e) {
    			// TODO 自动生成的 catch 块
    			e.printStackTrace();
    		}
    		System.out.println("二维码生成成功!!");
    	}
    }
    

    需要使用的jar包

    <dependency>
    	<groupId>com.google.zxing</groupId>
    		<artifactId>javase</artifactId>
    	<version>3.3.1</version>
    </dependency> 
    
    展开全文
  • 实现扫描二维码并且解析二维码 二维码 自动变焦 自定义照相机
  • Asp.net生成二维码和解析二维码源码 源码描述: 这是一个比较实用的生成二维码和解析二维码小程序,首先通过一个一般处 理程序提供一个生成二维码的方法,在页面的ImageUrl调用生成二维码图像。 用户通过上传图像...
  • 主要介绍了Java实现的生成二维码和解析二维码URL操作,结合实例形式分析了Java创建与解析二维码,以及文件读写等相关操作技巧,需要的朋友可以参考下
  • Asp.net生成二维码和解析二维码:可以根据输入的内容生成二维码,根据上传的二维码图解析出对应的内容。
  • Java生成解析二维码

    2018-03-22 17:06:49
    java生成二维码及解析二维码(带jar包),可以直接使用
  • maven 项目生成普通二维码、带logo二维码,并解析二维码

    准备:生成带logo的二维码时,logo图片必须存在;不存在则生成无logo的二维码。

    1、建立Maven项目,并引入jar包。

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

    2、编码


    import java.awt.BasicStroke;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.Shape;
    import java.awt.geom.RoundRectangle2D;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Random;
    
    import javax.imageio.ImageIO;
    
    import com.google.zxing.BarcodeFormat;
    import com.google.zxing.BinaryBitmap;
    import com.google.zxing.DecodeHintType;
    import com.google.zxing.EncodeHintType;
    import com.google.zxing.MultiFormatReader;
    import com.google.zxing.MultiFormatWriter;
    import com.google.zxing.Result;
    import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
    import com.google.zxing.client.j2se.MatrixToImageConfig;
    import com.google.zxing.client.j2se.MatrixToImageWriter;
    import com.google.zxing.common.BitMatrix;
    import com.google.zxing.common.HybridBinarizer;
    import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
    
    public class QRCode {
        private static final String CHARSET = "utf-8";
        private static final String FORMAT_NAME = "png";
        // 二维码尺寸
        private static final int QRCODE_SIZE = 300;
        // LOGO宽度
        private static final int WIDTH = 60;
        // LOGO高度
        private static final int HEIGHT = 60;
        
         public static String decode(String path) throws Exception {  
            return QRCode.decode(new File(path));  
        }  
          
        /**
         * 从二维码中解析数据 
         * @param file 二维码图片文件
         * @return    返回从二维码中解析到的数据值 
         * @throws Exception
         * @author wanmm
         * @date 2017年9月12日
         */
        public static String decode(File file) throws Exception{
            BufferedImage image = ImageIO.read(file);//图片缓存对象
            if(image ==null)
                return null;
            BufferedImageLuminanceSource source = new BufferedImageLuminanceSource(image);
            //BinaryBitmap 解码二进制位图
            BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
            /* Hashtable hints = new Hashtable();  
                可用下面的Map对象替换
            */
            Map<DecodeHintType,Object> hints = new HashMap<DecodeHintType,Object>();
            //设置字符串解码格式
            hints.put(DecodeHintType.CHARACTER_SET, CHARSET);
            //Result封装在图像中的解码结果
            Result result = new MultiFormatReader().decode(bitmap, hints);
            return result.getText();
        }
        
        /**
         * 生成带logo二维码,并保存到磁盘中
         * @param content    二维码内容
         * @param imgPath    二维码中插入的logo的图片路径
         * @param destPath    目标路径
         * @param needCompress 是否压缩logo的大小
         * @throws Exception
         * @author wanmm
         * @date 2017年9月12日
         */
        public static void encode(String content,String imgPath,String destPath,boolean needCompress) throws Exception{
            BufferedImage image = QRCode.createImage(content, imgPath, needCompress);
            mkdirs(destPath);
            String file = new Random().nextInt(99999999) + ".png";//生成随机文件名  
            ImageIO.write(image, FORMAT_NAME, new File(destPath + "/" + file));  
        }
        
        public static void mkdirs(String destPath){
            File file = new File(destPath);
            if(!file.exists() && !file.isDirectory()){
                file.mkdirs();
            }
        }
        /**
         * 生成二维码
         * @param contend    二维码内容
         * @param imgPath    二维码中插入的logo的图片路径
         * @param needCompress    是否压缩logo的大小
         * @return    二维码图片
         * @throws Exception
         * @author wanmm
         * @date 2017年9月12日
         */
        public static BufferedImage createImage(String content,String imgPath,boolean needCompress) throws Exception{
            Map<EncodeHintType,Object> hints = new HashMap<EncodeHintType,Object>();
            //纠错程度
            hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
            //字符编码
            hints.put(EncodeHintType.CHARACTER_SET, CHARSET);
            //生成条形码时使用的空白值。单位:像素
            hints.put(EncodeHintType.MARGIN, 1);
            //二维码的描述对象
            BitMatrix bitMatrix = new MultiFormatWriter().encode(content
                    , BarcodeFormat.QR_CODE, QRCODE_SIZE, QRCODE_SIZE,hints);
            /*int width = bitMatrix.getWidth();
            int height = bitMatrix.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++){
                    //bitMatrix.get获取所请求的点
                    image.setRGB(x, y, bitMatrix.get(x, y)? 0xFF000000 : 0xFFFFFFFF);
                }
            }*/
            MatrixToImageConfig config = new MatrixToImageConfig(0xFF000001, 0xFFFFFFFF);
            BufferedImage image = MatrixToImageWriter.toBufferedImage(bitMatrix, config);
            if(imgPath == null || "".equals(imgPath)){
                return image;
            }
            //二维码中加入logo
            QRCode.insertImage(image, imgPath, needCompress);
            return image;
        }
        
        /**
         * 在生成的二维码中插入logo图片
         * @param source  二维码图片
         * @param imgPath logo路径
         * @param needCompress 是否压缩logo的大小
         * @throws Exception
         * @author wanmm
         * @date 2017年9月12日
         */
        private static void insertImage(BufferedImage source,String imgPath,boolean needCompress) throws Exception{
            File file = new File(imgPath);
            if(!file.exists()){
                System.err.println(imgPath+" 该文件不存在");
                return;
            }
            Image logoImg = ImageIO.read(file);
            int width = logoImg.getWidth(null);
            int height = logoImg.getHeight(null);
            if(needCompress){
                if(width > WIDTH)
                    width = WIDTH;
                if(height > HEIGHT)
                    height = HEIGHT;
                //创建压缩图像
                Image img = logoImg.getScaledInstance(width, height, Image.SCALE_SMOOTH);
                BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
                // 绘制缩小后的图  
                Graphics g = tag.getGraphics();
                g.drawImage(img, 0, 0, null);
                g.dispose();
                logoImg = img;
            }
            //插入logo图片
            Graphics2D graph = source.createGraphics();
            // 计算图片放置位置
            int x = (QRCODE_SIZE-width)/2;
            int y = (QRCODE_SIZE-height)/2;
            graph.drawImage(logoImg, x, y, width, height, null);
            Shape shape = new RoundRectangle2D.Float(x, y, width, height, 6, 6);
        
            //设置图形画线的宽度为3
            graph.setStroke(new BasicStroke(3f));
            graph.draw(shape);
            graph.dispose();
        }
        
       public static void encode(String content, String imgPath, String destPath) throws Exception {  
            QRCode.encode(content, imgPath, destPath, false);  
        }  
      
        public static void encode(String content, String destPath, boolean needCompress) throws Exception {  
            QRCode.encode(content, null, destPath, needCompress);  
        }  
      
        public static void encode(String content, String destPath) throws Exception {  
            QRCode.encode(content, null, destPath, false);  
        }  
    }
    
    3 测试

     public static void main(String[] args) throws Exception {  
            //生成带logo 的二维码   
            String text = "http://www.csdn.net/";  
            QRCode.encode(text, "d:/img/tximg.png", "d:/img", true);  
           //生成不带logo 的二维码  
            String textt = "http://www.baidu.com";  
            QRCode.encode(textt,"","d:/img",true);  
             //指定二维码图片,解析返回数据  
            System.out.println(QRCodeUtil.decode("D:/img/61679114.png"));  
        }  

    参考:点击打开链接

    展开全文
  • ZXing解析二维码

    千次阅读 2015-05-15 21:07:46
    Java用ZXing解析二维码

      上一篇文件已经说过如何用ZXing进行生成二维码和带图片的二维码,下面说下如何解析二维码

    二维码的解析和生成类似,也可以参考google的一个操作类 BufferedImageLuminanceSource类,该类可在google的测试包中找到,另外j2se中也有该类,你可以将该类直接拷贝到源码中使用,你也可以自己写个。

    import java.awt.Graphics2D;
    import java.awt.geom.AffineTransform;
    import java.awt.image.BufferedImage;
    import java.awt.image.WritableRaster;
    import com.google.zxing.LuminanceSource;
    
    /**
     * 
     * 二维码的解析需要借助BufferedImageLuminanceSource类,该类是由Google提供的,可以将该类直接拷贝到源码中使用,当然你也可以自己写个
     * 解析条形码的基类
     */
    
    public final class BufferedImageLuminanceSource extends LuminanceSource {
    
      private static final double MINUS_45_IN_RADIANS = -0.7853981633974483; // Math.toRadians(-45.0)
    
      private final BufferedImage image;
      private final int left;
      private final int top;
    
      private static final boolean EXPLICIT_LUMINANCE_CONVERSION;
      static {
        String property = System.getProperty("explicitLuminanceConversion");
        if (property == null) {
          property = System.getenv("EXPLICIT_LUMINANCE_CONVERSION");
        }
        EXPLICIT_LUMINANCE_CONVERSION = Boolean.parseBoolean(property);
      }
    
      public BufferedImageLuminanceSource(BufferedImage image) {
        this(image, 0, 0, image.getWidth(), image.getHeight());
      }
    
      public BufferedImageLuminanceSource(BufferedImage image, int left, int top, int width, int height) {
        super(width, height);
    
        if (image.getType() == BufferedImage.TYPE_BYTE_GRAY) {
          this.image = image;
        } else {
          int sourceWidth = image.getWidth();
          int sourceHeight = image.getHeight();
          if (left + width > sourceWidth || top + height > sourceHeight) {
            throw new IllegalArgumentException("Crop rectangle does not fit within image data.");
          }
    
          this.image = new BufferedImage(sourceWidth, sourceHeight, BufferedImage.TYPE_BYTE_GRAY);
    
          if (EXPLICIT_LUMINANCE_CONVERSION) {
    
            WritableRaster raster = this.image.getRaster();
            int[] buffer = new int[width];
            for (int y = top; y < top + height; y++) {
              image.getRGB(left, y, width, 1, buffer, 0, sourceWidth);
              for (int x = 0; x < width; x++) {
                int pixel = buffer[x];
    
                // see comments in implicit branch
                if ((pixel & 0xFF000000) == 0) {
                  pixel = 0xFFFFFFFF; // = white
                }
    
                // .229R + 0.587G + 0.114B (YUV/YIQ for PAL and NTSC)
                buffer[x] =
                    (306 * ((pixel >> 16) & 0xFF) +
                     601 * ((pixel >> 8) & 0xFF) +
                     117 * (pixel & 0xFF) +
                     0x200) >> 10;
              }
              raster.setPixels(left, y, width, 1, buffer);
            }
    
          } else {
    
            // The color of fully-transparent pixels is irrelevant. They are often, technically, fully-transparent
            // black (0 alpha, and then 0 RGB). They are often used, of course as the "white" area in a
            // barcode image. Force any such pixel to be white:
            if (image.getAlphaRaster() != null) {
              int[] buffer = new int[width];
              for (int y = top; y < top + height; y++) {
                image.getRGB(left, y, width, 1, buffer, 0, sourceWidth);
                boolean rowChanged = false;
                for (int x = 0; x < width; x++) {
                  if ((buffer[x] & 0xFF000000) == 0) {
                    buffer[x] = 0xFFFFFFFF; // = white
                    rowChanged = true;
                  }
                }
                if (rowChanged) {
                  image.setRGB(left, y, width, 1, buffer, 0, sourceWidth);
                }
              }
            }
    
            // Create a grayscale copy, no need to calculate the luminance manually
            this.image.getGraphics().drawImage(image, 0, 0, null);
    
          }
        }
        this.left = left;
        this.top = top;
      }
    
      @Override
      public byte[] getRow(int y, byte[] row) {
        if (y < 0 || y >= getHeight()) {
          throw new IllegalArgumentException("Requested row is outside the image: " + y);
        }
        int width = getWidth();
        if (row == null || row.length < width) {
          row = new byte[width];
        }
        // The underlying raster of image consists of bytes with the luminance values
        image.getRaster().getDataElements(left, top + y, width, 1, row);
        return row;
      }
    
      @Override
      public byte[] getMatrix() {
        int width = getWidth();
        int height = getHeight();
        int area = width * height;
        byte[] matrix = new byte[area];
        // The underlying raster of image consists of area bytes with the luminance values
        image.getRaster().getDataElements(left, top, width, height, matrix);
        return matrix;
      }
    
      @Override
      public boolean isCropSupported() {
        return true;
      }
    
      @Override
      public LuminanceSource crop(int left, int top, int width, int height) {
        return new BufferedImageLuminanceSource(image, this.left + left, this.top + top, width, height);
      }
    
      /**
       * This is always true, since the image is a gray-scale image.
       *
       * @return true
       */
      @Override
      public boolean isRotateSupported() {
        return true;
      }
    
      @Override
      public LuminanceSource rotateCounterClockwise() {
        int sourceWidth = image.getWidth();
        int sourceHeight = image.getHeight();
    
        // Rotate 90 degrees counterclockwise.
        AffineTransform transform = new AffineTransform(0.0, -1.0, 1.0, 0.0, 0.0, sourceWidth);
    
        // Note width/height are flipped since we are rotating 90 degrees.
        BufferedImage rotatedImage = new BufferedImage(sourceHeight, sourceWidth, BufferedImage.TYPE_BYTE_GRAY);
    
        // Draw the original image into rotated, via transformation
        Graphics2D g = rotatedImage.createGraphics();
        g.drawImage(image, transform, null);
        g.dispose();
    
        // Maintain the cropped region, but rotate it too.
        int width = getWidth();
        return new BufferedImageLuminanceSource(rotatedImage, top, sourceWidth - (left + width), getHeight(), width);
      }
    
      @Override
      public LuminanceSource rotateCounterClockwise45() {
        int width = getWidth();
        int height = getHeight();
    
        int oldCenterX = left + width / 2;
        int oldCenterY = top + height / 2;
    
        // Rotate 45 degrees counterclockwise.
        AffineTransform transform = AffineTransform.getRotateInstance(MINUS_45_IN_RADIANS, oldCenterX, oldCenterY);
    
        int sourceDimension = Math.max(image.getWidth(), image.getHeight());
        BufferedImage rotatedImage = new BufferedImage(sourceDimension, sourceDimension, BufferedImage.TYPE_BYTE_GRAY);
    
        // Draw the original image into rotated, via transformation
        Graphics2D g = rotatedImage.createGraphics();
        g.drawImage(image, transform, null);
        g.dispose();
    
        int halfDimension = Math.max(width, height) / 2;
        int newLeft = Math.max(0, oldCenterX - halfDimension);
        int newTop = Math.max(0, oldCenterY - halfDimension);
        int newRight = Math.min(sourceDimension - 1, oldCenterX + halfDimension);
        int newBottom = Math.min(sourceDimension - 1, oldCenterY + halfDimension);
    
        return new BufferedImageLuminanceSource(rotatedImage, newLeft, newTop, newRight - newLeft, newBottom - newTop);
      }
    
    }

    操作类:DecodeTest

    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.util.Hashtable;
    import javax.imageio.ImageIO;
    import com.google.zxing.Binarizer;
    import com.google.zxing.BinaryBitmap;
    import com.google.zxing.DecodeHintType;
    import com.google.zxing.LuminanceSource;
    import com.google.zxing.MultiFormatReader;
    import com.google.zxing.Result;
    import com.google.zxing.common.HybridBinarizer;
    import com.utils.code.BufferedImageLuminanceSource;
    
    /**
     * 解析二维码 
     * @author Administrator
     *
     */
    public class DecodeHelper {
    	
    	public static void main(String[] args) throws Exception {
    		 try { 
    	         MultiFormatReader formatReader = new MultiFormatReader(); 
    	         String filePath = "D:\\new-1.gif"; //new.png
    	         File file = new File(filePath); 
    	         
    	         BufferedImage image = ImageIO.read(file);
    	         
    	         LuminanceSource source = new BufferedImageLuminanceSource(image); 
    	         
    	         Binarizer  binarizer = new HybridBinarizer(source); 
    	         
    	         BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer); 
    	         
    	         Hashtable<DecodeHintType, Object> hints = new Hashtable<DecodeHintType, Object>();    
    	         hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");    
    	         
    	         Result result = formatReader.decode(binaryBitmap,hints); 
    
    	         System.out.println("result = "+ result.toString()); 
    	         System.out.println("resultFormat = "+ result.getBarcodeFormat()); 
    	         System.out.println("resultText = "+ result.getText()); 
    
    		 } catch (Exception e) { 
    	         e.printStackTrace(); 
    	         } 
    	}
    }









    展开全文
  • 本地生成和解析二维码并保存为图片;用手机拍下二维码后,调用本地摄像头识别二维码内容。
  • java 生成解析二维码

    2011-12-28 15:37:32
    java 生成解析二维码
  • 通过zxing来自定义生成二维码和解析二维码功能
  • Zxing解析二维码

    千次阅读 2016-08-20 16:49:01
    上一篇文章说了二维码的生成,这次说二维码的解析步骤: 导入上次的jar包 ... //解析二维码的类 MultiFormatReader multiFormatReader=new MultiFormatReader(); //要解析的二维码的图片 File image=new Fi
  • 是java后台的二维码生成以及扫一扫解析二维码原理的实例,包含二维码生产,以及解析原理,代码实现不易。
  • Java生成和解析二维码

    2020-03-17 10:33:58
    Java实现生成和解析二维码,非常简单,拿来直接用就行,很方便哦。 二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码...
  • 之前我写过一篇博客是关于如何将zxing集成到Android...扫描速度也比较慢,功能不是很全,没有闪光灯,生成二维码,解析二维码图片,解析条码图片等。 这几天抽了点时间,将之前的代码完善了一下,主要是修复了一些b...
  • Asp.net生成二维码和解析二维码源码
  • 生成和解析二维码

    2015-01-19 17:27:46
    生成和解析二维码 代码 jar+代码+二维码图片+实验结果图片 有代码有真相!
  • android_Zxing解析二维码

    2016-04-15 11:46:58
    android_Zxing解析二维码
  • 主要介绍了Android中二维码的生成方法(普通二维码、中心Logo 二维码、及扫描解析二维码),需要的朋友可以参考下
  • QRcode生成、解析二维码项目与所有jar,注意,是包含生成、解析二维码

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,999
精华内容 17,599
关键字:

如何解析二维码的网址