精华内容
下载资源
问答
  • vue 生成二维码(完整源码在gitee)
    2019-09-14 07:16:08

    使用说明:

    二维码生成工具地址: http://jvm123.com/qr-code/

    此工具纯前端生成二维码,可生成一般的文本、网址邮件地址

    网址二维码在扫描之后,会启动手机浏览器或微信浏览器打开网址;

    邮件地址二维码在扫描之后,会启动发邮件的程序。

    如果不需要再扫描后自动打开网址,或启动邮箱软件,请使用文本类型生成二维码。

    开源源码:

    使用了qrcodejs2依赖库,关键源码如下:

    完整源码已经在gitee开源,并且采用中国首个开源软件协议: “木兰宽松许可证, 第1版 

    源码地址: https://gitee.com/yawensilence/vue-qr

     

    <template>
      <div id="qr">
        <div >
          <p>
            <label>
              二维码类型:
              <input type="radio" value="text" v-model="type"> 文本
              <input type="radio" value="web" v-model="type"> 网址
              <input type="radio" value="mail" v-model="type"> 邮箱
            </label>
          </p>
          <p>
            <label>
              请输入内容:
              <input v-model.trim="str"/>
            </label>
          </p>
          <p>
            <label>
              二维码边长:
              <input v-model.trim="len" value="140" type="range" max="600" min="80"/>
              {{len}}px
            </label>
          </p>
          <p style="text-align: right">
            <button @click="doit()">确定生成</button>
          </p>
        </div>
        <div id="qrcode"></div> <!-- 创建一个div,并设置id为qrcode -->
      </div>
    </template>
    
    <script>
      import QRCode from 'qrcodejs2'  // 引入qrcode
      export default {
        name : 'qr',
        data() {
          return {
            type: "text",
            str: "",
            len: 100
          }
        },
        mounted () {
          this.type = this.getParam("type");
          this.str = this.getParam("str");
          this.len = this.getParam("len");
          if (this.type === "null") {
            this.type = "txt";
          }
          if (this.str === "null") {
            this.str = "这是示例文本";
          }
          if (this.len === "null") {
            this.len = 140;
          }
          this.qr();
        },
        methods: {
          qr() {
            var str = this.str;
            if (this.type === "web" && !str.startsWith("http")) {
              str="http://" + str;
            }
            if (this.type === "mail" && !str.startsWith("mailto:")) {
              str="mailto:" + str;
            }
            let qrcode = new QRCode('qrcode', {
              width: this.len,
              height: this.len,
              text: str, // 二维码地址
              colorDark : "#000",
              colorLight : "#FFF",
            })
          },
          getParam(name){
            return decodeURIComponent((new RegExp('[?|&]'+name+'='+'([^&;]+?)(&|#|;|$)').exec(location.href)||[,""])[1].replace(/\+/g,'%20'))||null;
          },
          doit() {
            window.location.href='index.html?str='+this.str+"&len="+this.len+"&type="+this.type;
          }
        }
      }
    </script>

    本文转载自:http://jvm123.com/2019/08/qr-code-post/

    转载于:https://my.oschina.net/silenceyawen/blog/3094242

    更多相关内容
  • 可以通过这个源码在线生成各种各样的二维码,包括但不限于:网址二维码、地理位置二维码、邮箱二维码、文本信息二维码、电话短信二维码、wifi自动连接二维码等等,有了这个源码,相信可以给你的网站用户提供更友好的...
  • 源码二维码生成及美化

    千次阅读 2019-06-26 16:02:32
    // logo大小为二维码整体大小的1/5 float scaleFactor = srcWidth * 1.0f / 5 / logoWidth; Bitmap bitmap = Bitmap.createBitmap(srcWidth, srcHeight, Bitmap.Config.ARGB_8888); try { Canvas canvas = new ...

    activity.xml

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        tools:context="com.showimage.start.showimage.MainActivity">
    
        <ImageView
            android:id="@+id/imageView"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:scaleType="fitXY"
            app:srcCompat="@android:color/background_light"
            app:layout_constraintTop_toTopOf="parent"
            android:layout_marginTop="8dp"
            android:layout_marginLeft="8dp"
            app:layout_constraintLeft_toLeftOf="parent"
            android:layout_marginRight="8dp"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            android:layout_marginBottom="8dp" />
    
    </android.support.constraint.ConstraintLayout>

    AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.showimage.start.showimage">
        <uses-permission android:name="android.permission.INTERNET" />
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>

    MainActivity.java

    package com.showimage.start.showimage;
    
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;
    import android.widget.ImageView;
    
    import java.io.BufferedInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLConnection;
    
    public class MainActivity extends AppCompatActivity {
        private static final String TAG = "MainActivity";
    
        private static final int height = 240;
        private static final int width = 240;
        private ImageView imageView;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            imageView = (ImageView) findViewById(R.id.imageView);
            Bitmap mBitmap = null;
            //生成不带logo的二维码
            //mBitmap = MakeQRCodeUtil.generateQRCode("https://www.baidu.com", width, height);
            //生成带logo的二维码
            mBitmap = MakeQRCodeUtil.generateQRCode(MakeQRCodeUtil.gainBitmap(this, R.drawable.test2),"https://www.baidu.com", width, height);
            //添加背景
            mBitmap = MakeQRCodeUtil.addBackground(mBitmap, MakeQRCodeUtil.gainBitmap(this, R.drawable.test1));
            //添加水印
            mBitmap = MakeQRCodeUtil.composeWatermark(mBitmap, MakeQRCodeUtil.gainBitmap(this, R.drawable.test3));
            //添加文字
            mBitmap = MakeQRCodeUtil.addTextToBitmap(mBitmap, "愿岁月静好,现世安稳");
            imageView.setImageBitmap(mBitmap);
        }
    }
    

    MakeQRCodeUtil.java

    package com.showimage.start.showimage;
    
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    
    import com.google.zxing.BarcodeFormat;
    import com.google.zxing.EncodeHintType;
    import com.google.zxing.MultiFormatWriter;
    import com.google.zxing.WriterException;
    import com.google.zxing.common.BitMatrix;
    import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
    
    import java.util.HashMap;
    
    /**
     * Created on 2016/2/24.
     * 生成二维码的工具类
     */
    public class MakeQRCodeUtil {
        //转换位图
        private static Bitmap bitMatrix2Bitmap(BitMatrix matrix) {
            int WIDTH = matrix.getWidth();
            int HEIGHT = matrix.getHeight();
            int[] pixels = new int[WIDTH * HEIGHT];
            for (int y = 0; y < WIDTH; y++) {
                for (int x = 0; x < HEIGHT; x++) {
                    int color = Color.WHITE;
                    if (matrix.get(x, y)) {
                        color = 0xFF0094FF + y/2;// 蓝色
                        // 有内容的部分,颜色设置为黑色,当然这里可以自己修改成喜欢的颜色
    //                    if (x < WIDTH / 2 && y < HEIGHT / 2) {
    //                        color = 0xFF0094FF;// 蓝色
    //                        //Integer.toHexString(new Random().nextInt());
    //                    } else if (x < WIDTH / 2 && y > HEIGHT / 2) {
    //                        color = 0xFFFED545;// 黄色
    //                    } else if (x > WIDTH / 2 && y > HEIGHT / 2) {
    //                        color = 0xFF5ACF00;// 绿色
    //                    } else {
    //                        color = 0xFF000000;// 黑色
    //                    }
                    }
                    pixels[x + (y * WIDTH)] = color;
                }
            }
    
            Bitmap bitmap = Bitmap.createBitmap(WIDTH, HEIGHT, Bitmap.Config.RGB_565);
            bitmap.setPixels(pixels, 0, WIDTH, 0, 0, WIDTH, HEIGHT);
            return bitmap;
        }
    
        //添加logo
        private static Bitmap addLogo(Bitmap src, Bitmap logo) {
            if (logo == null) {
                return src;
            }
            // 获取图片的宽高
            int srcWidth = src.getWidth();
            int srcHeight = src.getHeight();
            int logoWidth = logo.getWidth();
            int logoHeight = logo.getHeight();
            if (logoWidth == 0 || logoHeight == 0) {
                return src;
            }
            // logo大小为二维码整体大小的1/5
            float scaleFactor = srcWidth * 1.0f / 5 / logoWidth;
            Bitmap bitmap = Bitmap.createBitmap(srcWidth, srcHeight, Bitmap.Config.ARGB_8888);
            try {
                Canvas canvas = new Canvas(bitmap);
                canvas.drawBitmap(src, 0, 0, null);
                canvas.scale(scaleFactor, scaleFactor, srcWidth / 2, srcHeight / 2);
                canvas.drawBitmap(logo, (srcWidth - logoWidth) / 2, (srcHeight - logoHeight) / 2, null);
                canvas.save(Canvas.ALL_SAVE_FLAG);
                canvas.restore();
            } catch (Exception e) {
                bitmap = null;
                e.getStackTrace();
            }
    
            return bitmap;
        }
    
        /**
         * 从资源文件中获取图片
         *
         * @param context    上下文
         * @param drawableId 资源文件id
         * @return
         */
        public static Bitmap gainBitmap(Context context, int drawableId) {
            Bitmap bmp = BitmapFactory.decodeResource(context.getResources(),
                    drawableId);
            return bmp;
        }
    
        /**
         * 在图片右下角添加水印
         *
         * @param srcBMP  原图
         * @param markBMP 水印图片
         * @return 合成水印后的图片
         */
        public static Bitmap composeWatermark(Bitmap srcBMP, Bitmap markBMP) {
            if (srcBMP == null) {
                return null;
            }
            // 创建一个新的和SRC长度宽度一样的位图
            Bitmap newb = Bitmap.createBitmap(srcBMP.getWidth(),
                    srcBMP.getHeight(), Bitmap.Config.ARGB_8888);
            Canvas cv = new Canvas(newb);
            // 在 0,0坐标开始画入原图
            cv.drawBitmap(srcBMP, 0, 0, null);
            // 在原图的右下角画入水印
            cv.drawBitmap(markBMP, srcBMP.getWidth() - markBMP.getWidth() * 2 / 5,
                    srcBMP.getHeight() * 6 / 7, null);
            // 保存
            cv.save(Canvas.ALL_SAVE_FLAG);
            // 存储
            cv.restore();
            return newb;
        }
    
        /**
         * 给二维码图片加背景
         */
        public static Bitmap addBackground(Bitmap foreground, Bitmap background) {
            int bgWidth = background.getWidth();
            int bgHeight = background.getHeight();
            int fgWidth = foreground.getWidth();
            int fgHeight = foreground.getHeight();
            Bitmap newmap = Bitmap
                    .createBitmap(bgWidth, bgHeight, Bitmap.Config.ARGB_8888);
            Canvas canvas = new Canvas(newmap);
            canvas.drawBitmap(background, 0, 0, null);
            canvas.drawBitmap(foreground, (bgWidth - fgWidth) / 2,
                    (bgHeight - fgHeight) * 2 / 5 + 70, null);
            canvas.save(Canvas.ALL_SAVE_FLAG);
            canvas.restore();
            return newmap;
        }
    //-----------------------------------------------------------------------------------------------------------------------
        public static Bitmap generateQRCode(Bitmap logo, String content, int width, int height) {
            return  addLogo(generateQRCode(content, width, height), logo);
        }
    
        //生成二维码
        public static Bitmap generateQRCode(String content, int width, int height) {
            try {
                HashMap<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();
                // 设置编码方式utf-8
                hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
                //设置二维码的纠错级别为h
                hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
                BitMatrix matrix = new MultiFormatWriter().encode(content,BarcodeFormat.QR_CODE, width, height, hints);
                return bitMatrix2Bitmap(matrix);
            } catch (WriterException e) {
                e.printStackTrace();
            }
            return null;
        }
    
        public static Bitmap addTextToBitmap(Bitmap bmpSrc, String text) {
            int srcWidth = bmpSrc.getWidth();
            int srcHeight = bmpSrc.getHeight();
    
            // 先计算text所需要的height
            int textSize = 20;
            int padding = 3;
            int textLinePadding = 1;
            // 每行的文字
            int perLineWords = (srcWidth - 2 * padding) / textSize;
            int lineNum = text.length() / perLineWords;
            lineNum = text.length() % perLineWords == 0 ? lineNum : lineNum + 1;
            int textTotalHeight = lineNum * (textSize + textLinePadding) + 2 * padding;
    
            Bitmap bitmap = Bitmap.createBitmap(srcWidth, srcHeight + textTotalHeight,
                    Bitmap.Config.ARGB_8888);
            try {
                Canvas canvas = new Canvas(bitmap);
                canvas.drawColor(Color.WHITE);
                canvas.drawBitmap(bmpSrc, 0, 0, null);
                Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
                paint.setColor(Color.BLACK);
                paint.setTextSize(textSize);
                String lineText;
                for (int i = 0, startY = srcHeight + textSize, start, end; i < lineNum; i++) {
                    start = i * perLineWords;
                    end = start + perLineWords;
                    lineText = text.substring(start, end > text.length() ? text.length() : end);
                    canvas.drawText(lineText, padding, startY, paint);
                    startY += textSize + textLinePadding;
                }
                canvas.save(Canvas.ALL_SAVE_FLAG);
                canvas.restore();
            } catch (Exception e) {
                bitmap = null;
                e.getStackTrace();
            }
            return bitmap;
        }
    }

    以上就是全部源码,如果有调试问题,欢迎留言告知,谢谢!!

    展开全文
  • 一个炫酷的二维码生成项目

    前阵子打算换一个炫酷的公众号二维码,无奈市面上很多的二维码修改器都不尽人意。

    草料二维码也挺炫酷的,但是也没有满意的效果。

    于是又去万能的github逛了一下,终于找到了一款开源的二维码修改器。

    这个项目叫  amazing-qr,目前github已经有 8.8k star 了。

    概述

     amazing-qr开发语言是纯 Python 。

    项目可生成三种二维码:

    • 普通二维码

    • 艺术二维码(支持自定义背景图片)

    • 动态gif的二维码(支持自定义背景图片)

    事不宜迟,先来看看生成的效果。

    示例

    我们平时一般看到的二维码一般都是这样的,普通二维码:

    通过该项目可以生成以下炫酷的二维码。

    黑白二维码:

    彩色艺术二维码:

    动态gif的二维码:

    安装

    首先需要安装python(Python 3)环境。

    然后直接使用 pip 安装该项目即可:

    pip install amzqr
    

    使用

    一些使用参数:

    # 概括
    amzqr Words
          [-v {1,2,3,...,40}]
          [-l {L,M,Q,H}]
          [-n output-filename]
          [-d output-directory]
          [-p picture_file]
          [-c]
          [-con contrast]
          [-bri brightness]
    

    Words 代表二维码里面的文字)

    普通二维码:

    #1 Words
    amzqr https://github.com
    
    • 在命令后输入链接或者句子作为参数,然后在程序的当前目录中产生相应的二维码图片文件,默认命名为 qrcode.png

    #2 -v, -l
    amzqr https://github.com -v 10 -l Q
    
    • 默认边长是取决于你输入的信息的长度和使用的纠错等级;

      默认纠错等级是最高级的H。

    • 自定义:如果想要控制边长和纠错水平就使用 -v 和 -l 参数。

      -v 控制边长,范围是1至40,数字越大边长越大;

      -l 控制纠错水平,范围是L、M、Q、H,从左到右依次升高。

    #3 -n, -d
    amzqr https://github.com -n github_qr.jpg  -d .../paths/
    
    • 默认输出文件名是“ qrcode.png ",而默认存储位置是当前目录。

    • 自定义:可以自己定义输出名称和位置。注意同名文件会覆盖旧的。

      -n 控制文件名,格式可以是 .jpg, .png ,.bmp ,.gif ;

      -d 控制位置。

    艺术二维码:

    #1 -p
    amzqr https://github.com -p github.jpg
    
    • 参数-p 即你自定义的背景图片,放在同一目录下,届时会产生一张黑白图片。

    #2 -c
    amzqr https://github.com -p github.jpg -c
    
    • 加上参数 -c 可以使产生的图片由黑白变为彩色的。

    #3 -con, -bri
    amzqr https://github.com -p github.jpg [-c] -con 1.5 -bri 1.6
    
    • 参数-con 用以调节图片的对比度,1.0 表示原始图片,更小的值表示更低对比度,更大反之。默认为1.0

    • 参数 -bri 用来调节图片的亮度,其余用法和取值与 -con 相同。

    动态GIF二维码:

    动态二维码与上述的带图片的二维码的生成方法没什么区别,你只要采用 .gif 格式的图片即可生成黑白或者彩色的动态二维码。

    注意如果使用了-n 参数自定义输出的文件名,切记其格式也必须是 .gif 格式。

    以上就是简单的用法。

    最后附带Github地址:https://github.com/x-hw/amazing-qr

    本人花费2个月时间,整理了一套JAVA开发技术资料,内容涵盖java基础,分布式、微服务等主流技术资料,包含大厂面经,学习笔记、源码讲义、项目实战、讲解视频。

     

     

     


     希望可以帮助一些想通过自学提升能力的朋友,领取资料,扫码关注一下

    记得关注公众号【编码师兄

    领取更多学习资料
     

     

    展开全文
  • 在线生成二维码,使用PHP语言编写,好用。
  • 一、纯前端与canvas实现二维码和图片合成海报功能(生成带二维码的好友分享图片) 二、代码完整,可以直接使用
  • 二维码是国内专业的二维码服务提供商,提供二维码生成,美化,印制,管理,统计等服务
  • 可以设置一段文字、一个电话、一个网址等等在线生成二维码的工具,可以通过这个源码在线生成各种各样的二维码。包括但不限于:网址二维码、地理位置二维码、邮箱二维码、文本信息二维码、电话短信二维码、wifi自动...
  • 简介: QQ微信支付宝三合一收款码在线生成艺术创意二维码 网站源码 网盘下载地址: http://kekewl.net/cCToG3DvclJ0 图片:

    简介:

    QQ微信支付宝三合一收款码在线生成艺术创意二维码 网站源码


    网盘下载地址:

    http://kekewl.net/cCToG3DvclJ0


    图片:



    展开全文
  • 二维码在线生成源码

    2014-04-11 21:25:38
    二维码在线生成系统源码 支持美化 缩放 等功能
  • 二维码美化策略——QArt Codes

    千次阅读 2019-01-17 16:58:07
    本文介绍的是由作者Cox所提出来的一种针对于QRCode的美化策略,以下是全文部分: QRcode是一种用来对字节符号进行编码的二维码。它的最常用方法之一便是在手机上替代网址的手动输入,而采用扫描带有网址信息的...
  • 基于python-OpenCV摄像头人脸检测。
  • Python+pyqt5+qrcode+opencv+pillow编写的二维码生成器,有少量的美化效果
  • 复卡顿速度起飞,美化界面,修复红包错位,修复抢包名字错位,修复互转错误,增加抢包音效 这个版本是很完美了基本问题都搞定了 可对接充值 提现秒到账 怎么修改可以看文字教程 服务器4核4G可完美运行本源码 ...
  • java生成推广二维码

    2016-01-14 11:47:09
    全网唯一全面美化二维码代码源码,自己纯手工制作。 具体功能:图片和图片组合,图片添加推广文字。 成品类似0元购推广二维码。可添加文字,可组合图片。
  • 彩色二维码生成器

    2018-05-05 15:38:17
    可以将链接和图片生成彩色的二维码图片,美化黑白的二维码
  • 1:美化。 2:生成模板专门搞了一个文件夹装了起来。 3:本地化,生成的文件在/data里面。 4:修复二维码失效增加两套生成模板 安装说明: 直接上传源码到服务器就可以使用了 后台地址:域名/admin 账号密码都是:...
  • 企业发卡系统源码(带有代理功能发卡平台源码) Admin后台登录页面重写...支付界面 短链接 二维码 后台模板等修复及一些细节优化 pc用户端后台稍微美化(颜色调整) 安卓用户端后台界面UI美化重写,商户头像根据QQ获取
  • 今天我们来看看二维码的生成以及美化二维码(添加logo、彩色、背景、文字、水印在这里都能找到)。 第三方库 现在在实际应用中使用的最为广泛的二维码生成工具就是Zxing库,本文以Zxing-2.0版本做的研究分析。...
  • 今天给大家带来一个简单的Python应用实验:生成个性二维码。 实验内容: 通过调用MyQR接口来实现生成个人所需二维码,并可以设置二维码的大小、是否在现有图片的基础上生成、是否生成动态二维码。主要面向Python3...
  • 打赏代码jQuery点击弹出支付宝微信二维码打赏源代码 不需要下载插件
  • 卡特三合一收款码生成系统源码,和收款啦采用一样的原理 内部多达50多套模板,前端跟付款界面都特别好看 识别收款码之后会自动加密,非常安全 一样没有后台,一样采用Layui前端框架都是开源! 网盘下载地址: ...
  • 可以把链接一键生成二维码,并且可以批量打包成图片压缩包下载,目前是完整的基础源码,只实现功能,需要有编程基础者才能使用,还需要自己添加全选和链接替换等,样式需要自己美化
  • 布局(activity.xml)、权限(AndroidManifest.xml)和 MainActivity.java(基本...飞机票:【源码二维码生成及美化 MakeQRCodeUtil.java package com.showimage.start.showimage; import android.content...
  • 方法很简单,只需要下载源码,解压后修改index.html和替换收款二维码图片,放到服务器或者虚拟机上即可,一个单页面,无须后台 网盘下载地址: http://kekewangLuo.net/k57CvEY1qDz0 图片: ...
  • 1:美化。 2:生成模板专门搞了一个文件夹装了起来。 3:本地化,生成的文件在/data里面。 4:修复二维码失效增加两套生成模板 5:去授权,这个是无授权的整套系统
  • 二维码CMS目前已提供通用文本、电子名片、网址、短信、WiFi网络、电话号码、电子邮箱等彩色、液态、直角、圆圈二维码的在线生成功能。 更新时间:2013-06-11 更新内容: 1、修复了设置URL模式后,验证码错误,图片...
  • 业务场景需要扫码互动,咨询了小熊派官方,并没有提供案例,之前出厂时屏幕可以显示的二维码只是一个固定图片,显然不适合.到网上找了一些资料,解说的不算完整,不能直接应用。根据这些前人的提醒,自己迁移一份。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 775
精华内容 310
关键字:

二维码美化源码