Passer in your life.
判斷圖片是否含有QRcode 2019/04/19

本文使用 LINE Messaging BOT 進行實例

點擊添加示例機器人-->加入好友


教學導覽

【PHP】透過PHP解析QRcode圖片
【C#】透過c#解析QRcode圖片



透過PHP解析QRcode圖片

我們使用QRcode decoder去做解析, 他是基於ZXing的PHP庫

我們可以透過Composer去安裝此庫(若你沒有安裝過Composer, 請點擊旁邊的連結下載)
接著, 我們在資料夾內開啟Cmd並鍵入以下指令安裝QRcode decoder

$ composer require khanamiryan/qrcode-detector-decoder


安裝成功後, 它會多出了兩個文件及一個資料夾

接著我們我們編輯該目錄下的PHP文件調用以下內容

require __DIR__ . "/vendor/autoload.php";
use Zxing\QrReader;

並且可以使用函式QrReader去導入圖片, 然後得出qrcode內容!
$qrcode = new QrReader('圖片路徑');
$text = $qrcode->text(); //qrcode內容
完成後, 架構大概如下

若圖片中沒有任何qrcode或者無法解析的話, 返回值將會是空字串, 所以可以透過是否為空字串去判斷圖片是否含有qrcode!

大功告成!!! 讓我嘗試代入到Line機器人上!

透過C#解析QRcode圖片

我們一樣是使用ZXing, 此範例透過Visual Studio 2017去使用C# web api串接Line bot來進行測試!
首先為專案安裝NuGet套件(專案->管理NuGet套件), 搜尋ZXing, 並安裝ZXing.Net

引用以下函式庫

using ZXing.QrCode;
using ZXing.Common;
using ZXing;
using System.Drawing; //主要用Bitmap



接著, 我們得先把圖片轉成Bitmap, 才能讓ZXing去讀取解析圖片
var image = (Bitmap)Bitmap.FromFile("圖片路徑");
try
{
    LuminanceSource source = new BitmapLuminanceSource(image);
    BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
    Result qrcode = new MultiFormatReader().decode(bitmap);
    if (qrcode != null)
    {
        //qrcode內容為: qrcode.Text
        var text = $"[QRcode]\n{qrcode.Text}";
    }
    else
    {
        //沒有qrcode內容
    }
}
catch (Exception ex)
{
    //error: ex
}
                        


大功告成!!! 再讓我嘗試代入到Line機器人上!


教學到此結束, 雖然很想再新增其他語言的教學, 有興趣的話可以關鍵字搜尋ZXing即可!



瀏覽次數
© DeachSword 2016 - 2020 強權世代
Passer in your life.