オンライン編集
使用されるJSプラグイン:
qrコードvg
情報をもとにQRコードを描画するプラグイン
カラーピッカー
色の選択に使用され、QR コードの色を変更する js バインディング イベント (svg)
svg 形式の QR コードを html5 キャンバスに変換し、toDataURL メソッドを使用して QR コード画像の Base64 エンコード データを生成し、Ajax 経由でバックエンドに送信するために使用されます。
サーマルプリンターでQRコードを印刷
画像はBMP形式に変換する必要があります。画像を BMP に変換するためのクラス:
- /**
- * クラス jpg、gif、png =========> BMP
- *
- * { 説明 :-
- * jpg、gif、または png をサイズ変更して bmp に変換するクラス
- * }
- * 詳細については、私 (mahabub1212@yahoo.com) までお問い合わせください
- * 変更、使用、再配布できますこのクラス
- */
- class ToBmp{
-
- // 新しい画像の幅
- var $new_width;
-
- // 新しい画像の高さ
- var $new_height;
-
- //画像リソース
- var $image_resource;
-
- function image_info($source_image){
- $img_info = getimagesize($source_image);
-
- switch ($img_info['mime']){
- case "image/jpeg": { $this ->image_resource = imagecreatefromjpeg ($source_image); }
- case "image/gif": { $this->image_resource = imagecreatefromgif ($source_image) }
- case "image/png"; ->image_resource = imagecreatefrompng ($source_image); }
- デフォルト: {die("画像エラー");}
- }
- }
-
-
- public function imagebmp($file_path = ''){
-
- if(! $this->image_resource) die("画像エラー");
- $picture_width = imagex($this->image_resource);
- $picture_height = imagey($this->image_resource);
-
-
- if(!imageistruecolor ($this->image_resource)){
- $tmp_img_resource = imagecreatetruecolor($picture_width,$picture_height);
- imagecopy($tmp_img_reource,$this->image_resource, 0, 0, 0, 0, $picture_width, $picture_height) ;
- imagedestroy($this->image_resource);
- $this->image_resource = $tmp_img_resource;
-
- }
-
-
- if((int) $this->new_width >0 && (int) $this- >new_height > 0){
-
- $image_resize = imagecreatetruecolor($this->new_width, $this->new_height);
- imagecopyresampled($image_resize,$this->image_resource,0,0,0,0) ,$this->new_width,$this->new_height,$picture_width,$picture_height);
- imagedestroy($this->image_resource);
- $this->image_resource = $image_resize;
-
- }
-
- $ result = '';
-
- $biBPLine = ((int) $this->new_width >0 &&(int)$this->new_height > 0) $this->new_width * 3 : $picture_width * 3;
- $biStride = ($biBPLine + 3) & ~3;
- $biSizeImage = ((int) $this->new_width >0 &&(int)$this->new_height > 0) ? * $this->new_height : $biStride * $picture_height;
- $bfOffBits = 54;
- $bfSize = $bfOffBits + $biSizeImage;
-
- $result .= substr('BM', 0, 2);
- $result .= パック ('VvvV', $bfSize, 0, 0, $bfOffBits);
- $result .= ((int) $this->new_width >0 &&(int)$this->new_height > 0 ) ? パック ('VVVvvVVVVVV', 40, $this->new_width, $this->new_height, 1, 24, 0, $biSizeImage, 0, 0, 0, 0) : パック ('VVVvvVVVVVV', 40, $picture_width, $picture_height, 1, 24, 0, $biSizeImage, 0, 0, 0, 0);
-
- $numpad = $biStride - $biBPLine;
-
- $h = ((int) $this->new_width >0 &&(int)$this->new_height > 0) ? $this->new_height : $picture_height;
- $w = ((int) $this->new_width >0 &&(int)$ this->new_height > 0) ? $this->new_width : $picture_width;
-
- for ($y = $h - 1; $y >= 0; --$y) {
- for ($x) = 0; $x < $w ++$x) {
- $col = image_resource, $x, $y);
- $result('V', $ Col), 0, 3);
- }
- for ($i = 0; $i < $numpad; ++$i) {
- $result .= Pack ('C', 0);
- }
- }
-
- if($file_path == ''){
- header("Content-type: image/bmp");
- echo $result;
- } else {
- $fp = fopen($file_path,"wb") ;
- fwrite($fp,$result);
- fclose($fp);
- //=============
- }
- return
- }
- }
コードをコピー
使用方法
- $ToBMP = new ToBmp();
- $ToBMP->image_info($path_to_img);
- $ToBMP->new_width = 255;
- $ToBMP->new_height = 255;
- $output_path = realpath( PATH.'test.bmp');
- $ToBMP->imagebmp($output_path);
-
コードをコピー
BMP 形式には、異なるファイルヘッダー情報に基づいた異なるデータ構成構造があります
私のものは 24 ビット BMP で、ヘッダー ファイルの 54 バイトを削除した後、3 バイトごと (RGB) がポイントを表します。
RGB (3 バイトを 1 バイトに) を結合し、ピクセルを 2 値化します (1 ビットを取得します。つまり、ポイントは黒または白です。2 値化の理由は、サーマル プリンターが白黒で印刷するがカラーでは印刷しないためです)。
各 8 ビットは 1 バイトに連結され、「xx」の 16 進形式で表現されます。プリンタが提供するインターフェースに従い、データをプリンタに送信することで印刷することができます。
注意してください:
1.unpackの使い方
- $content = file_get_contents($path_to_img);
- $content = unpack("H*", $content) //画像データの 16 進表現を取得します
-
コードをコピーします
2.
「xFE」は4文字を表します
「xFE」は1文字(つまり、16進数に対応するASCIIコード文字)を表します
単一引用符は chr('0xFE') を使用して変換できます
|