最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

QR 二維碼中插入圖片實現(xiàn)方法

 更新時間:2016年11月10日 17:06:16   作者:skyYangpan  
這篇文章主要介紹了QR 二維碼中插入圖片實現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下

QR 二維碼中插入圖片

二維碼終于火了,現(xiàn)在大街小巷大小商品廣告上的二維碼標簽都隨處可見,而且大都不是簡單的純二維碼,而是中間有個性圖標的二維碼。

我之前做了一個使用google開源項目zxing實現(xiàn)二維碼、一維碼編碼解碼的程序并開放了源碼(用C#實現(xiàn)的條形碼和二維碼編碼解碼器),今天繼續(xù)在此程序基礎上,實現(xiàn)二維碼中間加小圖片。

背景知識

QRcode使用里德-所羅門碼來進行錯誤修正。對于我們來說,里德-所羅門編碼有兩個非常重要的特性。第一,它是一種顯式系統(tǒng)碼,也就是說,你可以在最終的編碼中直接看到原有的信息。就好比我們對”hello world”進行編碼,最終看到的是”hello world”以及其后面跟隨的幾個容錯碼。第二點,里德-所羅門編碼是可以被”異或”的,將兩個不同里德-所羅門編碼得到的結(jié)果異或運算后會得到一個新的里德-所羅門碼,并且這個新碼的原碼即是原來兩個原碼的異或。如果你想知道為什么這兩個特性會成立,請看Finite Field Arithmetic and Reed-Solomon Coding.

QRcode

一副QRcode圖像會定義一些獨特的描述符來幫助人們或者電腦識別出自己是一張QRcode。這種描述符隨著QRcode的大小不同而略有區(qū)別——越大的QRcode圖像擁有越多的描述符。但是對于人的識別來說,特征最明顯的還是圖片的四個角的符號是固定的,看到這樣的四個角人類就本能的反應:這是一個QRcode。

(實際上,我們可以通過讀取圖像最左上角的兩個象素點來判斷編碼的冗余程度。定義黑色為0,白色為1,那么如果看到00則是L級別的冗余,01是M,10是Q,11則是最高的H級別冗余。

有了上面的這些工作,我們可以非常容易的知道原碼信息在圖像中的位置。然后通過改變自己的原碼信息,就可以改變圖像中的像素以至于可以在里面作圖了。雖說如此,下面的一些情形可以讓事情變得更有趣。

我做的二維碼插入圖片:

之前我給大家免費提供了使用zxing開源項目改造而成的一二維碼編碼解碼器,但未能插入圖片。這次經(jīng)過一番努力,成功將圖片插入二維碼,并能編碼和解碼。插入圖片的關(guān)鍵在于二維碼容錯系數(shù)的調(diào)整,源碼中有詳盡描述。

界面:

 

要在二維碼中插入圖片且可以正常解碼,主要注意以下兩點即可:

1.設置二維碼的容錯系數(shù)要高;

在Zxing項目中,二維碼生成的時候是可以設置容錯系數(shù)的:

將EncodeHintType.ERROR_CORRECTION設置成ErrorCorrectionLevel.H

//構(gòu)造二維碼寫碼器
        MultiFormatWriter mutiWriter = new com.google.zxing.MultiFormatWriter();
        Hashtable hint=new Hashtable();
        hint.Add(EncodeHintType.CHARACTER_SET,"UTF-8");
        hint.Add(EncodeHintType.ERROR_CORRECTION,com.google.zxing.qrcode.decoder.ErrorCorrectionLevel.H);
        //生成二維碼
        ByteMatrix bm = mutiWriter.encode(txtMsg.Text, com.google.zxing.BarcodeFormat.QR_CODE, 300, 300,hint);
        Bitmap img = bm.ToBitmap();

2.中間插入的圖片大小和位置要合適;


中間圖片如果太大,遮住了二維碼的大部分面積,那肯定不行,如果太小,就起不到個性化的效果。

那么多大合適呢,根據(jù)前文中描述的QR碼的特點,其三個帶方塊的角上是數(shù)據(jù)區(qū),不能覆蓋,只有中間和右下角這片區(qū)域可以覆蓋,但也不宜過大。

經(jīng)測試,中間小圖片尺寸占二維碼總寬度的2/7比較合適,既滿足了圖片的清晰度,又不影響二維碼的加密數(shù)據(jù)。

小圖片最好居中放置,而且形狀可以不規(guī)則。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • SpringBoot@Componet注解注入失敗的問題

    SpringBoot@Componet注解注入失敗的問題

    這篇文章主要介紹了SpringBoot@Componet注解注入失敗的問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 詳解領(lǐng)域驅(qū)動設計之事件驅(qū)動與CQRS

    詳解領(lǐng)域驅(qū)動設計之事件驅(qū)動與CQRS

    這篇文章分析了如何應用事件來分離軟件核心復雜度。探究CQRS為什么廣泛應用于DDD項目中,以及如何落地實現(xiàn)CQRS框架。當然我們也要警惕一些失敗的教訓,利弊分析以后再去抉擇正確的應對之道
    2021-06-06
  • springMVC引入Validation的具體步驟詳解

    springMVC引入Validation的具體步驟詳解

    本文簡單介紹如何引入validation的步驟,如何通過自定義validation減少代碼量,提高生產(chǎn)力,非常具有實用價值,需要的朋友可以參考下
    2018-05-05
  • IDEA中Mybatis的MGB使用逆向工程配置的詳細教程

    IDEA中Mybatis的MGB使用逆向工程配置的詳細教程

    這篇文章主要介紹了IDEA中Mybatis的MGB使用逆向工程配置,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • Java實現(xiàn)RedisUtils操作五大集合(增刪改查)

    Java實現(xiàn)RedisUtils操作五大集合(增刪改查)

    本文主要介紹了Java實現(xiàn)RedisUtils操作五大集合,文中通過示例代碼介紹的非常詳細,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-07-07
  • SpringBoot中使用EasyExcel并行導出多個excel文件并壓縮zip后下載的代碼詳解

    SpringBoot中使用EasyExcel并行導出多個excel文件并壓縮zip后下載的代碼詳解

    SpringBoot的同步導出方式中,服務器會阻塞直到Excel文件生成完畢,在處理大量數(shù)據(jù)的導出功能,本文給大家介紹了SpringBoot中使用EasyExcel并行導出多個excel文件并壓縮zip后下載,需要的朋友可以參考下
    2024-09-09
  • Springboot啟動停止命令的.sh腳本編寫方式

    Springboot啟動停止命令的.sh腳本編寫方式

    這篇文章主要介紹了Springboot啟動停止命令的.sh腳本編寫方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Java開發(fā)或調(diào)用WebService的幾種方式總結(jié)

    Java開發(fā)或調(diào)用WebService的幾種方式總結(jié)

    java開發(fā)過程中,很多地方都會遇到數(shù)據(jù)傳遞,遠程獲取數(shù)據(jù)問題,這篇文章主要介紹了Java開發(fā)或調(diào)用WebService的幾種方式的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-06-06
  • Java在Word中添加多行圖片水印

    Java在Word中添加多行圖片水印

    這篇文章主要介紹了Java在Word中添加多行圖片,圖文講解的很清晰,有對于這方面不懂得同學可以跟著研究下
    2021-02-02
  • Java組件開發(fā)之文件壓縮與解壓詳解

    Java組件開發(fā)之文件壓縮與解壓詳解

    這篇文章主要為大家詳細介紹了如何使用Java開發(fā)一個文件壓縮與解壓組件,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-10-10

最新評論

蓬莱市| 隆化县| 大城县| 夹江县| 肇庆市| 都匀市| 苍梧县| 澎湖县| 惠水县| 苍南县| 新巴尔虎左旗| 古交市| 德阳市| 玉山县| 墨竹工卡县| 武川县| 钦州市| 大英县| 榆林市| 乌审旗| 咸阳市| 攀枝花市| 余江县| 东丰县| 莱西市| 中阳县| 通山县| 无为县| 平潭县| 武清区| 益阳市| 安龙县| 舞阳县| 和政县| 盐池县| 宁安市| 盐源县| 宜宾县| 高雄县| 靖江市| 汉川市|