QR 코드는 해당 코딩 알고리즘을 통해 텍스트, 그림, URL 및 기타 정보를 기록하기 위해 흑백 평면 기하학적 그림을 사용하는 바코드 사진입니다. 다음 그림
QR 코드의 기능 :
1. 고밀도 코딩, 큰 정보 용량
최대 1850 개의 대문자 또는 2710 숫자 또는 1108 바이트, 또는 500 개 이상의 중국어를 수용 할 수 있으며, 이는 일반 바코드 정보보다 수십 배 더 높습니다.
2. 넓은 인코딩 범위
이 바코드는 그림, 사운드, 텍스트, 서명, 지문 등과 같은 디지털화 된 정보를 인코딩하여 바코드로 표현할 수 있습니다. 그들은 여러 언어로 텍스트를 나타낼 수 있습니다. 그리고 이미지 데이터를 나타낼 수 있습니다.
3. 강한 결함 허용 오류 및 오류 수정 기능
이를 통해 천공, 더럽기 등으로 인해 2 차원 바코드가 제대로 손상 될 수 있으며 손상 영역이 50%에 도달하면 정보를 계속 복구 할 수 있습니다.
4. 높은 디코딩 신뢰성
그것은 백만당 2 자의 일반 바코드 디코딩의 오류율보다 훨씬 낮으며 오류율은 백만당 1 파티를 넘지 않습니다.
5. 암호화 측정을 도입 할 수 있습니다
우수한 기밀성과 반사 방지.
6. 저렴한 비용, 만들기 쉽고 내구성
위의 특성으로 인해 QR 코드가 점점 더 인기를 얻고 있으며 더 널리 사용됩니다 (자세한 내용은 Baidu 백과 사전 참조, 소개는이 기사의 초점이 아닙니다). 따라서 QR 코드를 개발하는 방법을 마스터하는 것은 매우 좋은 지식 보호 구역입니다. 따라서이 기사는 QR 코드를 생성하고 분석하는 방법을 설명합니다.
1. 자바
필수 JAR 패키지 : qrcode.jar
http://sourceforge.jp/projects/qrcode/
2 차원 코드 클래스 : QR 코드 작동 핵심 클래스
패키지 qrcode; import java.awt.color; import java.awt.graphics2d; import java.awt.image.bufferedImage; import java.io.file; import java.io.ioexception; import java.io.inputstream; import java.io.outputstream; import javax.imageio.imageio.imageio.imageio.imageio. jp.sourceforge.qrcode.qrcodedecoder; import jp.sourceforge.qrcode.exception.decodingfailedexception; import com.swetake.util.qrcode; public class twodimensioncode { / *** qrcode 생성 (qrcode) 그림* @param imppath photo picture phote phate phate phote arepod. encoderqrcode (문자열 내용, String imgpath) {this.encoderqrcode (content, imgpath, "png", 7); } / *** QR 코드 생성 (QRCODE) 그림* @Param 컨텐츠 저장 내용* @Param 출력 출력 스트림* / public void encoderQrcode (문자열 컨텐츠, 출력 스트림 출력) {this.encoderQrcode (콘텐츠, 출력, "png", 7); } / *** QR 코드 생성 (qrcode) 그림* @param 컨텐츠 저장 내용* @param imgpath 사진 경로* @param imgtype 그림 유형* / public void encoderqrcode (문자열 내용, String imgpath, String imgtype) {this.encoderqrcode (content, imgtype, 7); } / *** QR 코드 생성 (QRCODE) 그림* @Param 컨텐츠 저장 내용* @param 출력 출력 스트림* @param imgtype 이미지 유형* / public void encoderqrcode (문자열 내용, 출력 스트림 출력, String imgtype) {this.encoderqrcode (컨텐츠, 출력, imgtype, 7); } / *** QR 코드 생성 (qrcode) 이미지 생성* @param 컨텐츠 저장 내용* @param imgpath 사진 경로* @param imgtype 이미지 유형* @param size qr code size* / public void encoderqrcode (문자열 imgpath, String imgtype, int size) {try buberedtimage bufimg = this.qrcommon, img em, it. 크기); 파일 imgfile = 새 파일 (imgpath); // QR 코드 생성 qrcode imageio.write (bufimg, imgtype, imgfile); } catch (예외 e) {e.printstacktrace (); }} / *** QR 코드 생성 (qrcode) 이미지* @param 컨텐츠 저장소 컨텐츠* @param 출력 출력 스트림* @param imgtype image im imgtype, 크기); // QR 코드 생성 qrcode imageio.write (bufimg, imgtype, output); } catch (예외 e) {e.printstacktrace (); }} / *** QR 코드를 생성하는 공개 메소드 (QRCODE) 이미지* @Param 컨텐츠 저장 내용* @param imgtype 이미지 유형* @param size qr code size* / private bufferedimage qrcodecommon (문자열 내용, String imgtype, int size) {bufferedimage bufimg = null; {qrcode qrcodehandler = new qrcode (); // QR 코드 오류율을 설정하여 L (7%), M (15%), Q (25%) 및 H (30%)로 선택할 수 있습니다. 오류율이 높을수록 정보가 줄어들 수 있지만 QR 코드 Clarity QRCodeHandler.setQRCodeERRORCORRECT ( 'M')에 대한 요구 사항이 작을 수 있습니다. qrcodehandler.setqrcodeencodemode ( 'b'); // 1-40의 값 범위로 QR 코드 크기를 설정합니다. 값이 클수록 크기가 클수록 qrcodehandler.setqrcodeversion (size)을 저장할 수있는 정보가 클 수 있습니다. // 컨텐츠의 바이트 배열을 가져 와서 인코딩 형식 바이트를 설정합니다 [] contentBytes = content.getBytes ( "UTF-8"); // 이미지 크기 int imgsize = 67 + 12 * (크기 -1); bufimg = new bufferedimage (imgsize, imgsize, bufferedimage.type_int_rgb); 그래픽 2d gs = bufimg.creategraphics (); // 배경색 설정 Gs.setbackground (Color.white); gs. clearrect (0, 0, imgsize, imgsize); // 이미지 색상 설정> 검은 색 gs.setColor (color.black); // 오프셋을 설정하고 설정하지 않으면 구문 분석 오류가 발생할 수 있습니다. int pixoff = 2; // output content> qr code if (contentBytes.length> 0 && contentBytes.length <800) {boolean [] [] codeout = qrcodehandler.calqrcode (contentBytes); for (int i = 0; i <codeout.length; i ++) {for (int J = 0; }}}} else {throw new Exception ( "qrcode 컨텐츠 바이트 바이트 길 } gs.Dispose (); bufimg.flush (); } catch (예외 e) {e.printstacktrace (); } return bufimg; } / ** * QR 코드 분석 (qrcode) * @param imgpath image path * @return * / public string decoderqrcode (String imgpath) {// qrcode qr 코드 이미지 파일 imageFile = 새 파일 (imgpath); BufferedImage bufimg = null; 문자열 내용 = null; try {bufimg = imageio.read (imageFile); qrcodedecoder decoder = 새로운 qrcodedecoder (); content = new String (decoder.decode (new twodimensioncodeimage (bufimg)), "UTF-8"); } catch (ioException e) {System.out.println ( "error :" + e.getMessage ()); e.printstacktrace (); } catch (decodingfailedException dfe) {system.out.println ( "error :" + dfe.getMessage ()); dfe.printstacktrace (); } 반환 컨텐츠; } / ** * 구문 분석 QR 코드 (QRCODE) * @Param Input Input Stream * @return * / public String decoderqrcode (inputStream input) {bufferedImage bufimg = null; 문자열 내용 = null; try {bufimg = imageio.read (입력); qrcodedecoder decoder = 새로운 qrcodedecoder (); content = new String (decoder.decode (new twodimensioncodeimage (bufimg)), "UTF-8"); } catch (ioException e) {System.out.println ( "error :" + e.getMessage ()); e.printstacktrace (); } catch (decodingfailedException dfe) {system.out.println ( "error :" + dfe.getMessage ()); dfe.printstacktrace (); } 반환 컨텐츠; } public static void main (String [] args) {String imgpath = "g : /tddownload/michael_qrcode.png"; 문자열 encodercontent = "안녕하세요 크고 작고 QRCode에 오신 것을 환영합니다!" + "/nmyBlog [http://sjsky.itey.com]" + "/nemail [[email protected]]"; TwodimensionCode handler = new TwodimensionCode (); handler.encoderqrcode (voncodercontent, imgpath, "png"); // try {// outputStream output = new FileOutputStream (imgpath); // handler.encoderQrcode (content, output); //} catch (예외 e) {// e.printstacktrace (); //} System.out.println ( "============================= 필적 성공"); 문자열 decodercontent = handler.decoderqrcode (imgpath); System.out.println ( "구문 분석 결과는 다음과 같습니다."); System.out.println (Decodercontent); System.out.println ( "============= 디코더 성공 !!!"); }}2wodimensioncodeimage 클래스 : QR 코드 이미지 객체
패키지 qrcode; import java.awt.image.bufferedimage; import jp.sourceforge.qrcode.data.qrcodeimage; public class twodimensioncodeimage implements qrcodeimage {bufferedimage bufimg; public twodimensioncodeimage (bufferedimage bufimg) {this.bufimg = bufimg; } @override public int getheight () {return bufimg.getheight (); } @override public int getpixel (int x, int y) {return bufimg.getrgb (x, y); } @override public int getWidth () {return bufimg.getWidth (); }}위는 Java QR 코드의 생성 및 분석에 대한 정보를 편집 한 것입니다. 나중에 계속 추가 할 것입니다. 이 웹 사이트를 지원 해주셔서 감사합니다!