精华内容
下载资源
问答
  • 每个 byte 转成 8 位二进制数据,二进制的 0、1表示像素点的黑白。测试点阵是 48*48 像素,2304个点,对应 288 个byte 数据。 搜了一下没找到现成轮子,想着难度也不大,参考 zxing 二维码的显示,顺便复习下 ...

    收到一个需求,平台下发给单片机的二维码数据不是字符串,而是一堆 byte 数据,接口不能改动,Android 端需要显示这个二维码。
    每个 byte 转成 8 位二进制数据,二进制的 0、1表示像素点的黑白。测试点阵是 48*48 像素,2304个点,对应 288 个byte 数据。
    搜了一下没找到现成轮子,想着难度也不大,参考 zxing 二维码的显示,顺便复习下 bitmap 知识,搞定。不多说,上代码

    //测试数据
    String data = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000FFFFBF9E0EFEFFFFA098D682FFFFAEAD4CBAFFFFAEA4F2BAFFFFAE8444BAFFFFA084A282FFFFBFAAAAFEFFFF80179A00FFFF86D72218FFFF925EBB16FFFFB7926380FFFFA304C056FFFFAD9623DEFFFF88246160FFFF92E96B1AFFFFAE57735AFFFFBB9F8606FFFFB60178AAFFFFB4D69F42FFFFBD2B6A52FFFFB5E533FCFFFF803D8A20FFFFBFAA26BEFFFFA088763EFFFFAEB0C7FCFFFFAEA90574FFFFAE853316FFFFA0892534FFFFBF9957C8FFFF80000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF";
    
    private Bitmap createQRImage(ImageView imageView,String data) {
     
        byte[] bytes = BytesUtils.hexStringToBytes(data);
    
        //原始数据是 48*48 的点阵
        int QR_SIZE=48;
        //实际图像大小是原始数据的几倍
        int MULTIPLE=2;
        int QR_WIDTH=QR_SIZE*MULTIPLE;
        int QR_HEIGHT=QR_SIZE*MULTIPLE;
    
        int[] pixels = new int[QR_WIDTH * QR_HEIGHT];
        for (int y = 0; y < QR_HEIGHT; y++) {
            for (int x = 0; x < QR_WIDTH; x++) {
                if (getPixel(bytes, y, QR_WIDTH, x,MULTIPLE)) {
                    pixels[y * QR_WIDTH + x] = 0xff000000;
                } else {
                    pixels[y * QR_HEIGHT + x] = 0xffffffff;
                }
            }
        }
        //生成二维码图片的格式,使用ARGB_8888
        Bitmap bitmap = Bitmap.createBitmap(QR_WIDTH, QR_HEIGHT, Bitmap.Config.ARGB_8888);
        bitmap.setPixels(pixels, 0, QR_WIDTH, 0, 0, QR_WIDTH, QR_HEIGHT);
        imageView.setImageBitmap(bitmap);
        return bitmap;
    }
    
    private boolean getPixel(byte[] bytes, int y, int QR_WIDTH, int x,int multiple) {
        int new_y = y / multiple;
        int new_QR_WIDTH = QR_WIDTH / multiple;
        int new_x = x / multiple;
    
        int index = new_QR_WIDTH / 8 * new_y + new_x / 8;
        byte tByte = bytes[index];
        String bin = Integer.toBinaryString((tByte & 0xFF) + 0x100).substring(1);
        String pix = bin.substring(new_x % 8, new_x % 8 + 1);
        return "0".equals(pix);
    }
    
    //工具类方法
    public static byte[] hexStringToBytes(String hexString) {
            if (hexString == null || hexString.equals( "" )) {
                return new byte[0];
            }
            // toUpperCase将字符串中的所有字符转换为大写
            hexString = hexString.toUpperCase();
            int length = hexString.length() / 2;
            // toCharArray将此字符串转换为一个新的字符数组。
            char[] hexChars = hexString.toCharArray();
            byte[] d = new byte[length];
            for (int i = 0; i < length; i++) {
                int pos = i * 2;
                d[i] = (byte) (charToByte( hexChars[pos] ) << 4
                        | charToByte( hexChars[pos + 1] ));
            }
            return d;
        }
    
    // charToByte返回在指定字符的第一个发生的字符串中的索引,即返回匹配字符
    private static byte charToByte(char c) {
            return (byte) "0123456789ABCDEF".indexOf( c );
    }
    参考:https://blog.csdn.net/Guet_Kite/article/details/74011975
    展开全文
  • getCode() { axios({ method: "get", url: "admin/verify", responseType: "arraybuffer", // 最为关键 }).then((res)=> { ... }, 登录验证码后端返回的二进制 进行如上操作 得到的imgUrl 直接放到img标签里面就可以了
    getCode() {
       axios({
            method: "get",
            url: "admin/verify",
            responseType: "arraybuffer", // 最为关键
        }).then((res)=> {
            this.imgUrl =
            "data:image/jpeg;base64," + this.arrayBufferToBase64(res.data);
            console.log(this.imgUrl)
        });
    },
    arrayBufferToBase64(buffer) {
         var binary = "";
         var bytes = new Uint8Array(buffer);
         var len = bytes.byteLength;
         for (var i = 0; i < len; i++) {
             binary += String.fromCharCode(bytes[i]);
         }
         return window.btoa(binary);
     },
    

    登录验证码后端返回的二进制 进行如上操作
    得到的imgUrl 直接放到img标签里面就可以了

    展开全文
  • 为了以后方便 小程序request请求中添加responseType: ‘arraybuffer’,

    为了以后方便
    小程序request请求中添加responseType: ‘arraybuffer’,

    展开全文
  • 二进制数字串生成二维码图片

    千次阅读 2019-04-20 16:09:44
    二进制数字生成二维码二进制数字生成二维码代码细节 用二进制数字生成二维码 打CTF比赛时,遇到题目将flag隐藏到二进制数中,数字的长度为一个整数的平方,以01表示黑白,利用Python3的PIL中的Image库,用二进制...

    用二进制数字串生成二维码图片

    前言

    最近一个CTF比赛时,遇到一个题目给出了一段全是01的数字串,且数字的长度为一个整数的平方(如25^2=625)时,有可能是以0、1表示黑或者白的一个像素,这样就可以生成一个正方形的像素图,以前遇到过这样的题目生成了一个二维码,扫描二维码得到Flag。
    这里利用Python3的PIL中的Image库,用01数字串生成一个二维码。

    代码

    from PIL import Image
    MAX = 25
    pic = Image.new("RGB",(MAX, MAX))
    str = "得到的二进制数字"
    i=0
    for y in range (0,MAX):
        for x in range (0,MAX):
            if(str[i] == '1'):
                pic.putpixel([x,y],(0, 0, 0))
            else:
                pic.putpixel([x,y],(255,255,255))
            i = i+1
    pic.show()
    pic.save("flag.png")``
    

    细节

    原本是SCTF中的一道MISC题,题目中得到的二进制数字串如下 1111111000100001101111111100000101110010110100000110111010100000000010111011011101001000000001011101101110101110110100101110110000010101011011010000011111111010101010101111111000000001011101110000000011010011000001010011101101111010101001000011100000000000101000000001001001101000100111001111011100111100001110111110001100101000110011100001010100011010001111010110000010100010110000011011101100100001110011100100001011111110100000000110101001000111101111111011100001101011011100000100001100110001111010111010001101001111100001011101011000111010011100101110100100111011011000110000010110001101000110001111111011010110111011011
    运行代码后得到图片,因为只有625像素图片比较小。
    在这里插入图片描述
    扫描二维码得到Flag
    在这里插入图片描述
    找了我半天,而且装Pillow库很麻烦,而且不这么写from PIL import Image还会出问题,网上也没有找到好的办法
    可惜这次比赛没有考到这个点,杂项真令人头大,不过这个知识点有这么个了解就够了,于是拿出来写个备忘。。

    合天公众号的一篇文章提到这个,参考的代码,也有很多好的可以参考
    https://mp.weixin.qq.com/s/RdHbQrhJdJrbaI5MsHGpkg

    展开全文
  • python下二进制流文件转二维码

    千次阅读 2019-09-28 16:07:01
    python下二进制流文件转二维码 之前过的一个ctf中的misc,经过一系列操作得到一个flag.txt 里面是一串二进制流 突然束手无策 经简单计算 260^2=67600 所以尝试能否转化为一个二维码 网上找了好久,没找到好用的...
  • /*用微信小程序token拿二维码*/ async fetchMINIQRcode({commit,state},params){ var instance = axios.create({ responseType: 'blob', //返回数据的格式,可选值为arraybuffer,blob,document,json,te...
  • 直接上代码 ctx.drawImage(this.data.imgurl, 20 * 2, 290 * 2, 85 * 2, 85 * 2); 重点!重点!重点!重要的事说三遍。 ...生成的小程序二维码,扫完之后是正式环境的,所以调试比较麻烦。
  • 小程序生成二维码并且把二进制流转换图片
  • URL转二维码再转二进制流图片
  • 因为,项目需要支持vs2010的cpp提取二维码二进制数据,原本zbar和zxing都会默认进行字符集编码转换(zxing默认utf-8),导致部分0x80等二进制数据被强制编码转换,而导致无法正确识别。现通过基于zxing源码修改默认...
  • 二维码在本地可以正常的在jsp上显示,部署到服务器上,展示出来的却是二进制文件 我的思路是这样的 我刚开始觉得是二维码图片生成有问题,随后我放弃了生成二维码,随便选择了一个JPG传到前端显示,结 果还是...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • 步骤:1 :通过接口获取token,为了避免在冲突,token最好存入redis中,即用即取,注意事项:获取到accessToken取出来是带双引号的,一定要代替掉"",不然返回的转化出来的二进制不对,这个地方坑了我好久,切记切记,还有就是...
  • 项目中需要生成小程序码给前端,生成二维码接口微信服务器直接返回二进制数据流,因为前后端接口是json格式同时业务服务器不能保存图片再给前端访问,需要json返回二进制图片数据 尝试直接返回二进制,字符太长无法...
  • <p>java 二维码图片转二进制 存进Oracle 使用什么技术呢?</p>
  • POST https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN 获取二进制流后 header("content-type: image/jpeg"); echo $stream; 就可以直接显示出来
  • // 实现二:生成二维码图片并将图片转为二进制传递给前台 // 1、读取文件转换为字节数组 ByteArrayOutputStream out = new ByteArrayOutputStream(); BufferedImage image = toBufferedImage(bitMatrix); //// ...
  • 、小程序前端js   js源码: wx.request({    url: app.globalData.url + "getCodeAccessToken.do", //请求服务器后台获取accessToken    data: {  },    method: 'POST',    ...
  • 废话不说,直接上代码 ...//得到post过来的二进制原始数据 $file = fopen("xcxcode/wxcode1.jpg","w");//创建件准备写入,文件名xcxcode/wxcode1.jpg为自定义 fwrite($file,$jpg);//写入 fclose($file);//关闭 ...
  • 我可以用zxing将一个Url转为一个二维码图片,可是怎么将这个图片转换成数据流呢?类似IOS里面的NSdata的数据格式?
  • <Button type="danger" style={{float:"right",background:"rgba(247,136,2,1)",color:"#fff",border:"none",marginLeft:"20px"}} icon="upload" onClick={()=>this.Downloader()}>...
  • //--------- 这是返回二进制数据, 浏览器访问 data:image/jpg;base64, 加上字符串 ByteArrayOutputStream out = new ByteArrayOutputStream(); BufferedImage image = toBufferedImage(bitMatrix); ImageIO.write...
  • am QRCode 把zxing.org的二进制拿过来,然后加了点高斯模糊的代码,精心制作的二维码识别
  • 前提业务要求:前台页面展示数据,有下载按钮,点击下载,下载对应数据的二维码。 首先,在pom.xml文件中添加依赖 <dependency> <groupId>com.google.zxing</groupId> <artifactId>...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,560
精华内容 5,824
关键字:

二进制做二维码