vCard仕様を使用してjavaで名刺を生成するQRコードスキャン自動保存連絡先を携帯電話に保存

4795 ワード

vCardの紹介
vCardは電子名刺のファイルフォーマットの基準です.一般的には電子メールの後に添付されています.しかし、インターネット上で交換するなど、他の場合にも使用できます.vCardに含まれる情報は、名前、住所情報、電話番号、URL、logo、写真などです.vCard(またはVersitcardと呼ばれています)は、1995年にVersit連盟が提案したもので、当時連盟のメンバーにはアップル社、AT&Tテクノロジーが含まれていました(後の朗報)、IBMおよびシーメンス.1996年12月、フォーマットの所有権はインターネットメール連盟(IMC)に移された.この連盟は、インターネットメールに注目するいくつかの会社から構成されている.vCardとともに提案されたデータ交換のための基準にはvCalendarがあるが、現在はiCalendarに取って代わられている.インターネットメール連盟は、「すべてのvCalendar開発者は、これらの新しいオープンスタンダードを利用して、vCalendar 1.0とiCalendarを同時に互換化することができます.」vCard規格の2.1版は、Eメールクライアントによって広くサポートされています.3.0版は、RFC 2425およびRFC 2426に含まれるIETF標準追跡提案である.vCardの一般的なサブアーカイブ名は.vcf. 異なるプログラムはvCard標準の実装にも異なる.Mac OS XのAddress Bookでは、すべての連絡先をvcfファイルにエクスポートできますが、Microsoft Outlookでは1人1ファイルしかエクスポートできません.LinuxのKDEのKontactでは、ファイルごとに1人以上をインポートまたはエクスポートできます.
vCardファイルサンプル
BEGIN:VCARD
VERSION:2.1
N:Gump;Forrest
FN:Forrest Gump
ORG:Gump Shrimp Co.
TITLE:Shrimp Man
TEL;WORK;VOICE:(111) 555-1212
TEL;HOME;VOICE:(404) 555-1212
EMAIL;PREF;INTERNET:[email protected]
REV:20080424T195243Z
END:VCARD

JAvaコード生成QRコード
  • Googleが提供するzxingパッケージにQRコードを生成する必要があります.事前にプロジェクトにインポートする準備ができています(com.google.zxing.comon.BitMatrix)
  • MatrixToImageWriterクラス
        import javax.imageio.ImageIO;
        import java.io.File;
        import java.io.OutputStream;
        import java.io.IOException;
        import java.awt.image.BufferedImage;
        import com.google.zxing.common.BitMatrix;
    
        public final 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);
            }
        }
    
    }
    

    CreQcodeクラス
    import java.io.File;
    import java.util.HashMap;
    import java.util.Map;
    
    import com.google.zxing.BarcodeFormat;
    import com.google.zxing.EncodeHintType;
    import com.google.zxing.MultiFormatWriter;
    import com.google.zxing.common.BitMatrix;
    
    public class CreQcode {
        public static void main(String[] args) {
            try {
                // 1.          format
                // BEGIN:VCARD
                // "VERSION:3.0
                // N:   
                // EMAIL:[email protected]
                // TEL:12345678912
                // TEL;CELL:12345678912
                // ADR:         
                // ORG:  
                // TITLE:     
                // URL:http://blog.csdn.net/lidew521
                // NOTE:      。。。
                // END:VCARD"
                // 2.        
                // ---------------------------------------
                //                      
                //              
                //       ,          
                // -------------------------------------------------
                // 3.  
    // , , // , java , android , // java
    ,
    String content = "BEGIN:VCARD
    " + "VERSION:3.0
    " + "N:
    " + "EMAIL:[email protected]
    " + "TEL:15100000000
    " + "ADR:
    " + "ORG:
    " + "TITLE:
    " + "URL:
    " + "NOTE:
    " + "END:VCARD"; String path = "D:/"; MultiFormatWriter multiFormatWriter = new MultiFormatWriter(); Map hints = new HashMap(); hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, 400, 400, hints); File file1 = new File(path, " .jpg"); MatrixToImageWriter.writeToFile(bitMatrix, "jpg", file1); } catch (Exception e) { e.printStackTrace(); } } }