陌陌头像留二维码隐藏技术,微信号,双头像生成工具,“codeA”方式开源

发布时间 2023-11-22 13:47:50作者: 花花java大师

正常情况下我们在陌陌头像留二维码会被系统检测到的,因为它识别到了这是二维码是,就算不封号对账号权重也有营销,但是一些人想在陌陌做一些产品,比如足浴、保健品之类的,想在陌陌引流,那么留二维码头像不封号的实现就非常重要了,我制作的这个工具可以生成干扰码,就是二维码生成干扰码导致系统识别不到是二维码,然后发动态用户可以看到时二维码,但是系统是检测不到,就是在图层最上面加入很多干扰码,不会正常影响图片的浏览,仅供学习代码,仅供学习代码,还有一个接口是调用了API实现二维码融合到图片里面用户看起来是一个图片,但是可以扫码识别出二维码,第三个功能是制作双图,正常发布用户看到的是一个风景图,但是点击后显示的是二维码【灰色】,通过“codeA”、“codeB”、“codeC”三种方式生成。

软件截图:

 

 

演示效果图:【不影响曝光率、仅供学习】

 

 

dll部分:

=========================================================

.版本 2

 

.DLL命令 外形设置, , "QRCodeWin32.dll", "QRAppearance", , 设置QRCode的条形码外观参数

  .参数 模块尺寸, 双精度小数型, , 指定的方形模块尺寸(宽/高)

  .参数 方向, 整数型, , 0为0度,1为90度,2为180度,3为270度

  .参数 边框, 整数型, , 边框样式;0为无,1为线边框,2为实心边框

 

.DLL命令 条码参数, , "QRCodeWin32.dll", "QRConfigure"

  .参数 版本, 整数型, , 见常量

  .参数 纠错级别, 整数型, , 0低,1一般,2高,3最高

  .参数 掩膜, 整数型, , 为了提高可读性,取值0—8

 

.DLL命令 输出wmf格式到剪切板, 整数型, "QRCodeWin32.dll", "QRCopyToClipboard", , 输出wmf格式到剪切板,成功返回非0失败返回0

 

.DLL命令 获取行列模块数, , "QRCodeWin32.dll", "QRGetActualRC", , 获取QRCode的条形码的行和列的实际数字。

  .参数 行, 整数型, 传址, 一个指针变量接收QRCode条形码的最后行

  .参数 列, 整数型, 传址, QRCode条形码的最后列的变量接收的指针

 

.DLL命令 输出bmp, 整数型, "QRCodeWin32.dll", "QRSaveAsBMP"

  .参数 文件名, 文本型

 

.DLL命令 初始化为默认, , "QRCodeWin32.dll", "QRSetDefault"

 

.DLL命令 设置文本, , "QRCodeWin32.dll", "QRSetMessage"

  .参数 文本, 文本型

 

.DLL命令 设置图像大小, , "QRCodeWin32.dll", "QRSetSize"

  .参数 宽度, 整数型

  .参数 高度, 整数型

 

.DLL命令 设置前景色, , "QRCodeWin32.dll", "QRSetBackColor"

  .参数 r, 整数型

  .参数 g, 整数型

  .参数 g, 整数型

 

.DLL命令 设置背景色, , "QRCodeWin32.dll", "QRSetBarColor"

  .参数 r, 整数型

  .参数 g, 整数型

  .参数 b, 整数型

 

========================================================

程序集1:

==========================================================

.版本 2

.支持库 xplib

 

.程序集 窗口程序集1

 

.子程序 __启动窗口_创建完毕

 

XP风格 (3)

组合框_版本赋值 ()

 

' 外形设置 (2, 1, 0)

' 条码参数 (#版本_自动, 0, 3)

 

 

.子程序 _按钮1_被单击

.局部变量 宽a度, 整数型

.局部变量 高a度, 整数型

 

初值 ()

 

设置图像大小 (500, 500)

输出bmp (取运行目录 () + “\a.bmp”)

图片框1.图片 = 读入文件 (取运行目录 () + “\a.bmp”)

 

 

.子程序 初值

 

设置文本 (编辑框1.内容)

设置前景色 (255, 255, 255)

设置背景色 (0, 0, 0)

条码参数 (组合框_版本.现行选中项, 组合框_纠错.现行选中项, 5)

外形设置 (0.2, 1, 0)

 

 

.子程序 组合框_版本赋值

.局部变量 n, 整数型

.局部变量 像素, 整数型

.局部变量 文本, 文本型

 

像素 = 21

组合框_版本.加入项目 (“自动”, )

.计次循环首 (40, n)

  文本 = 到文本 (像素)

  ' 组合框_版本.加入项目 (到文本 (n), )

  组合框_版本.加入项目 (“版本_” + 到文本 (n) + “  ” + 文本 + “×” + 文本, )

  像素 = 像素 + 4

.计次循环尾 ()

 

==========================================================

程序集2:

========================================================

.版本 2

.支持库 spec

 

.程序集 窗口程序集1

.程序集变量 lngRectLeft, 整数型

.程序集变量 lngRectTop, 整数型

.程序集变量 lngRectRight, 整数型

.程序集变量 lngRectBottom, 整数型

.程序集变量 blnEnableSetRect, 逻辑型

 

.子程序 __启动窗口_创建完毕

 

写到文件 (取运行目录 () + “\QRCodeWin32.dll”, #生成DLL)

写到文件 (取运行目录 () + “\PsyQrDcd.dll”, #解码DLL)

组合框_版本赋值 ()

组合框_版本.现行选中项 = 0

 

.子程序 _按钮1_被单击

.局部变量 宽a度, 整数型

.局部变量 高a度, 整数型

 

初值 ()

 

设置图像大小 (500, 500)

输出bmp (取运行目录 () + “\a.bmp”)

图片框1.图片 = 读入文件 (取运行目录 () + “\a.bmp”)

删除文件 (取运行目录 () + “\a.bmp”)

 

.子程序 _按钮2_被单击

 

通用对话框1.类型 = 1

通用对话框1.文件名 = “二维码”

通用对话框1.过滤器 = “*.bmp|*.bmp”

通用对话框1.默认文件后缀 = “bmp”

.如果真 (通用对话框1.打开 ())

  写到文件 (通用对话框1.文件名, 快照 (图片框1.取窗口句柄 (), , ))

.如果真结束

 

 

.子程序 初值

 

设置文本 (编辑框1.内容)

设置前景色 (255, 255, 255)

设置背景色 (0, 0, 0)

条码参数 (组合框_版本.现行选中项, 组合框_纠错.现行选中项, 0)

外形设置 (0.2, 1, 0)

 

 

.子程序 _按钮5_被单击

 

解码 ()

 

.子程序 组合框_版本赋值

.局部变量 n, 整数型

.局部变量 像素, 整数型

.局部变量 文本, 文本型

 

像素 = 21

组合框_版本.加入项目 (“自动”, )

.计次循环首 (40, n)

  文本 = 到文本 (像素)

  ' 组合框_版本.加入项目 (到文本 (n), )

  组合框_版本.加入项目 (“版本_” + 到文本 (n) + “  ” + 文本 + “×” + 文本, )

  像素 = 像素 + 4

.计次循环尾 ()

 

 

.子程序 _按钮3_被单击

 

通用对话框1.类型 = 0

通用对话框1.文件名 = “”

通用对话框1.过滤器 = “图片文件|*.jpg;*.bmp;*.gif”

.如果真 (通用对话框1.打开 ())

  图片框2.可视 = 真

  图片框2.图片 = 读入文件 (通用对话框1.文件名)

  编辑框2.内容 = 通用对话框1.文件名

  组合框_版本.现行选中项 = 3

  组合框_版本.禁止 = 真

.如果真结束

 

 

.子程序 _按钮4_被单击

 

编辑框2.内容 = “”

图片框2.可视 = 假

组合框_版本.现行选中项 = 0

组合框_版本.禁止 = 真

 

.子程序 解码

.局部变量 a, 文本型

 

通用对话框1.类型 = 0

通用对话框1.文件名 = “”

通用对话框1.过滤器 = “图片文件|*.jpg;*.bmp;*.gif”

.如果真 (通用对话框1.打开 ())

  _按钮4_被单击 ()

  图片框1.图片 = 读入文件 (通用对话框1.文件名)

  编辑框1.内容 = DecodeFile (通用对话框1.文件名)

  .判断开始 (编辑框1.内容 = “未找到 QR 代码符号。”)

 

  .判断 (编辑框1.内容 = “文件未找到!”)

 

  .判断 (编辑框1.内容 = “读取文件时发生错误。”)

 

  .判断 (编辑框1.内容 = “无法读取此格式文件”)

 

  .判断 (编辑框1.内容 = “共享冲突,无法读取文件。”)

 

  .判断 (编辑框1.内容 = “内存不足。”)

 

  .默认

 

  .判断结束

 

.如果真结束

 

 

.子程序 DecodeFile, 文本型

.参数 strFilePath, 文本型

.局部变量 intOldPointer, 整数型

.局部变量 lngResult, 整数型

.局部变量 strResult, 文本型

.局部变量 i, 整数型

.局部变量 lngCount, 整数型

.局部变量 lngSeqNo, 整数型

.局部变量 byCheckDigit, 字节型

.局部变量 lngPosition, 整数型, , "8"

 

 

.如果 (blnEnableSetRect)

  lngResult = DecodePictureFileRect (strFilePath, lngRectLeft, lngRectTop, lngRectRight, lngRectBottom)

.否则

  lngResult = DecodePictureFile (strFilePath)

.如果结束

 

 

.如果 (lngResult ≥ 1)

  strResult = UTF8_转_ANSI (到字节集 (GetDecodeDataString (i)))

  FreeAllocateMemory ()

 

.否则

 

 

  .判断开始 (lngResult = #QRD_ERROR_SYMBLE_NOT_FOUND)

    strResult = “未找到 QR 代码符号。”

  .判断 (lngResult = #QRD_ERROR_FILE_NOT_FOUND)

    strResult = “文件未找到!”

  .判断 (lngResult = #QRD_ERROR_READ_FAULT)

    strResult = “读取文件时发生错误。”

  .判断 (lngResult = #QRD_ERROR_BAD_FORMAT)

    strResult = “无法读取此格式文件。”

  .判断 (lngResult = #QRD_ERROR_SHARING_VIOLATION)

    strResult = “共享冲突,无法读取文件。”

  .判断 (lngResult = #QRD_ERROR_NOT_ENOUGH_MEMORY)

    strResult = “内存不足。”

  .默认

 

  .判断结束

 

.如果结束

 

调试输出 (strResult)

返回 (strResult)

 

 

 

 

.子程序 UTF8_转_ANSI, 文本型, 公开

.参数 utf8字节集, 字节集

 

返回 (Unicode_转_ANSI (UTF8_转_Unicode (utf8字节集)))

 

.子程序 UTF8_转_Unicode, 字节集

.参数 utf8字节集, 字节集

.局部变量 len, 整数型, , , 单位: Word

.局部变量 Unicode字节集, 字节集

.局部变量 ll

 

ll = 取字节集长度 (utf8字节集)

len = API_MultiByteToWideChar_utf8 (65001, 0, utf8字节集, ll, { }, 0)

' 936 表示简体中文代码页; -1 表示以"0"作为文本终止符

' 如果要去掉转换后Unicode字节集末尾的{0,0},则Unicode长度再减去1

Unicode字节集 = 取空白字节集 (len × 2)

API_MultiByteToWideChar_utf8 (65001, 0, utf8字节集, ll, Unicode字节集, len × 2)

返回 (Unicode字节集)

 

.子程序 Unicode_转_ANSI, 文本型

.参数 Unicode字节集, 字节集

.局部变量 ansi_len, 整数型, , , 单位: Word

.局部变量 unicode_len

.局部变量 ansi, 文本型

 

unicode_len = 取字节集长度 (Unicode字节集) ÷ 2

ansi_len = API_WideCharToMultiByte (936, 0, Unicode字节集, unicode_len, ansi, 0, “”, 0)

' 936 表示简体中文代码页; -1 表示以"0"作为文本终止符

' 如果要去掉转换后Unicode字节集末尾的{0,0},则Unicode长度再减去1

ansi = 取空白文本 (ansi_len)

' 输出调试文本 (ansi_len)

API_WideCharToMultiByte (936, 0, Unicode字节集, unicode_len, ansi, ansi_len, “”, 0)

返回 (ansi)

 

=========================================================