From 01c62db7ac8cdb1fda7e7103ab10ab84e9d3a8d8 Mon Sep 17 00:00:00 2001 From: atshike Date: Wed, 8 Jan 2025 09:05:01 +0800 Subject: [PATCH] fix:1 --- admin/src/api/links.ts | 9 + admin/src/assets/link/qq.png | Bin 0 -> 5711 bytes admin/src/assets/link/qqluodi.png | Bin 0 -> 48390 bytes admin/src/assets/link/qqqun.png | Bin 0 -> 8239 bytes .../addLink/components/qq/create-or-look.vue | 221 ++++++++++++++++++ .../link/addLink/components/qq/index.vue | 116 +++++++++ .../components/qqGroup/create-or-look.vue | 221 ++++++++++++++++++ .../link/addLink/components/qqGroup/index.vue | 116 +++++++++ serve/app/Enums/MiniProgramType.php | 9 + serve/app/Http/Controllers/HomeController.php | 11 + serve/app/Services/QrCodeService.php | 32 +++ serve/resources/install/step1.blade.php | 99 ++++++++ serve/resources/install/step2.blade.php | 221 ++++++++++++++++++ serve/resources/install/step3.blade.php | 140 +++++++++++ serve/resources/install/step4.blade.php | 56 +++++ serve/services/wechatqr-opencv/README.md | 5 + serve/services/wechatqr-opencv/cli.py | 34 +++ 17 files changed, 1290 insertions(+) create mode 100644 admin/src/api/links.ts create mode 100644 admin/src/assets/link/qq.png create mode 100644 admin/src/assets/link/qqluodi.png create mode 100644 admin/src/assets/link/qqqun.png create mode 100644 admin/src/views/link/addLink/components/qq/create-or-look.vue create mode 100644 admin/src/views/link/addLink/components/qq/index.vue create mode 100644 admin/src/views/link/addLink/components/qqGroup/create-or-look.vue create mode 100644 admin/src/views/link/addLink/components/qqGroup/index.vue create mode 100644 serve/app/Enums/MiniProgramType.php create mode 100644 serve/app/Http/Controllers/HomeController.php create mode 100644 serve/app/Services/QrCodeService.php create mode 100644 serve/resources/install/step1.blade.php create mode 100644 serve/resources/install/step2.blade.php create mode 100644 serve/resources/install/step3.blade.php create mode 100644 serve/resources/install/step4.blade.php create mode 100644 serve/services/wechatqr-opencv/README.md create mode 100644 serve/services/wechatqr-opencv/cli.py diff --git a/admin/src/api/links.ts b/admin/src/api/links.ts new file mode 100644 index 0000000..2b6c912 --- /dev/null +++ b/admin/src/api/links.ts @@ -0,0 +1,9 @@ +import http from '@/utils/http' + +export const EditLink = (data: any) => { + if (data && data.id) { + return http.put(`/links/${data.id}`, data) + } else { + return http.post('/links', data) + } +} diff --git a/admin/src/assets/link/qq.png b/admin/src/assets/link/qq.png new file mode 100644 index 0000000000000000000000000000000000000000..ad8512f05613e9622b7f63adbd9f998630774324 GIT binary patch literal 5711 zcmZu#cQ_o*^FD{@93n(LoZdy$BRZ!=#Bq9Xh)#qkQA6D6BrbY6iQx1ST||lAqW9iK zjcCEo=lA#bdEVLC=huFGsGLixS01B9eA+QP6@W?2jvktBcLJe|hQ zb8N!EC2s}f>C^>Vx0|bb8G`C#P`g?}AT7XDr9!0YY?m(*Fe8xw_4*`yd^Z8FFAYAi z*d>F|Jp^$twZH`@yi!GrlwevcvRZY2b53DTxHF!sUas+^ev^nC^RZ5@>d|KKkjz&J+YC>>s_CBWcj6FAS*MOyAv9P)f}P$HQ+m;H55I(G;`>D`c{MK;6{v!1 zZ2>oFGpM2w$`B$@p4oB`(&8U9OGZ>WBp}Dy^Kg;aCnxuq8hrPYMQD!g_ z8IH!joT!gaOs%Kw(ejLmi7Ag|U}CZj0~=n?Ya%F}Jt37n^f)a~E;Yz>-p^Au#b(%kZAPxp!PA z-F7DS>JOQji_iZZ`OXd3uO8KzoXnDF^}Dlm(j31kfOxXrEpE+mN0?qCg9Z;KGCdp4 zctL1Y^6cQe&vV=&;`sb3><4%uY8;7Cgm*F7^3wB3iPcKe=ejMLp0SR<{6QA3oLf1> z6044TwZFVy?Y62cXS_ad zM^R@-M>v;7qqFrdc}7mE6+s9>I?c?f59i2ud3iZJGZQs2Vf5$EAH~t?DAOY+KjA8c zvL%M)A0ysUWXM)D{rLQRtR@7gJDTIjh#lc=Xlyh_ckCtfzZdPR82bExkON$s7@LPu zY8Bpuu@RuMnP2cg-_3wKLvdW^8rAweFd%jCB`N%2B^Wg$;!eaV1jwtJANI;;lYcvEI(CKLCT51l|!k<hE5J=-OAe(O#mF9u4#?xn-+f9b^!Qr|l z(6D2W!!qi3YAhzp*wo1qO)q9(LzNb{%dg6V%6n136k#gx?0)ArH71=je1l&0q-j%) zDLx<{3Yq7&=oD@1*k)P8Q;3Xmr;8I!E%9ddN>U`{nC6{}Qsv0+xJiPP2z!d^I++WY(g0T6Q~#?jY5zFrllj-L>UI&_lmVT`dmDRP^Cecsy#X{d zD0Cf1^^VKx$S>m8-fQ;Md#fF8(%@BdL zfJdUrw2@C{hw^amx_(eD7>F@^!M(HM$~w}P9kd+tD%+=+<_+al7iM@)lnB zdI?5P-g1)tHX1+qR0U|z1hay=wTI4+ep!vVjTJ7uIL8HR+5W@o0X3|nLtkO4b7&n3l1kP_KgvuRC zuc&S7%Gmz7_i*zzMcg(gku%g+5v*7ma5m0%b;Mck(-t%Bx0GD_=*}*G;&*>Cy>Q$6 z?R1L(-=;q?Y(#QREDq%GP_}c@MWG0TUYy<0 zWur-z3g3_t>*p}!&2SLwQ1DRw@??62dCB;8yz9ZYFCg3mL1i($HCd#}Rp4Frs^EfE zCo)fsd6i!$)Ph4(9D_YZIFKutIrGF)`6e#wsn5L+`X*VH_~u+3N?SZ8?+p_Ec)h`6 zG~XD}-kdJeZlmumYOe1URtIu$>*3P`+iOsro#PM0k4dduN2I5W&s&j>q-MvF<-8o4 z+KY0mp-fjd6PLU8HXd4RKIv@CeuTuAK)T^+sG4JHL_CXxAyc+#?Q(I0*< zBp`M;(hTHerINI`ReE04l6p2z0bq{IYApRHs|6H8Gs&@{ykgKeQ`7ua^H;2Qwh)GN z-*RCT50j)tklDJVlUkUgE%@GuUi}7`N_*1F zktY(4NB)7RkmC^+f)qc2FP`j6rT!V{OEo-H=3oAvqPJooi{930uL`e&@W>x zcCYixDLpD32)fO`htGldp1V3GWUS!M8ETj)@}@fS;iyKj>|(OZC9bSe_I43%_QO|_ zC1dcj=i~Ih;l8rFVN$i1|30x5y6d=}Tx_rvIZw^(oREz_XuGsFdSQk0hp~qm3fA4PWq-r?q44f;Ou;NR@)c1wT+Ba>b9q42T)6ym*(+EiN>+qTb7R%-ADuVRRAwu zbzQTI5+n7pKBAzU-=ZN2QBbi-jrVI7;t!kS2@I58QU0V%eCRh7=`m+bgBqDob6^)| zcW)Qt4ys?h0g-g*(?oJ2l@~OK{Fz0Nn-Rt=2HYRAz$b+i8J4YE(o{)<`9$3=PP`^V zbfN|*c-mP4!Qe{fXX3_HL5Fy>v=(^UCG4ky6P2U-UVWXBgh%I6lJCB&;Zh8vJ2Fcc zuIAwx+Jl_6)du4Su58Q_sl6n?RJ?wss~0is0qgwY*>B(PeR-OAvjwd*E>rsMA6p!V zfBt)RX>p!1xJ&q4)`$IY;QBm59M1$Z04)K&U?YKO5VsbXun9+TtQ@U8pE;eD`Mhui zxIFl-{I}L~%ea*Ny6@yMA3^B_<@uX~u(CXsmfy3>2QM|2mhqi$Y}>aJ}|ulI*`w zWW?6wfs1du8k7-aN}wFa{CpC2X=JF393e;RT7v+Lzd4NkdZeqKO#yKo+!AL&41Eh| ziSsF+F8kr$LgsSw0HIJjQnuDs)6bI~HW28VPSkDTEO)+Pe>hwFqt=$GZo~du&If+o z^3z7_(RTw863C=h3QjRswov!)udm(0bkD@%t8JP7u{65h-Vn)!MnL{GvLPgf`@ame zZfuaR16x>TG0{F}!iPcw-=KA;P_G(^lqVleAE35B*!3QPld)Fy-?m@?fS=gKy(}|w z+nDf2dL6*f`)%&CJcHBlXghyjxGt6QR2XNz{1g``&1>IA@VK9YxqPkI0$70*er0S- zZ&KAL?`0)K+L3e^l_T0$0<3^EVgI$$W|@Q!&=&52G;1SQkZr3MMJ&MF!zd5)mYw^d zngF3*#gCmza;`s}LWje~!l~Cxsk@c@C&JU)1O@K0#~wgIQ%YV16#=DYRYlscPXFrS zYs=ra6d?SiYroE72rofHJG4UeZQ0iV&e^VBN8N=ycL#I z(~^$Z57d@SQ33}}o8iMC%Rk;vkcOhlb20A;Y*?$Rs(dp2%Zv#PNW1{tJ%X99h@`IX>;wP?xa)I*Dzc_tI$8fLPC@?DvCE3@u}>T?zOj$`Ay83gj*^h#x5!0D82 z3Ujyq;pbv+*rL<&!mjF#%HZr{{0^XJMQWkYh*KhhE=_Rh15KBAbDuLxD8o%@yA?^$ z(te;bQeguZcBBRjJLEOjln3}sIN2Zo~ zcMOlB)q5IniiBqsW1IQwD!*fosfS)a)dEa0b`^&r3=o?q6Hw(`5GTLJeKq@~o2L(} z)2F=^MxPgRQRc~0e~m?{j!IM>lIq{@L`gG*Op+^X9x`UX`Qa?njZ6$L!2zXYRIM?m zsvOjai>6~(K=!A09PnCT%qmu4uke+bxCy3*!Y~9(tlrdx=7&1_snu}>RN(mwiF|aT zmR#AVQ)AbbQiRZmF0{?2a4O$MmY;Mv+1LFY@?@;gMkC zF&x}PX@zj7=2f;PFPj*cvRBS2QWX99wS?}YUti36J`%RYaujx&3h9ofKw#?1I8Z8r zB1#pro^}MGLviZlt1UlRXYOq0Pt}Q1ZG*s$_x>fml(=h4eDv~70g-?FOio1=pv8R0 zl+@`h!JcE9^d8gi(7F2Er|h4KiqubHJsCF(*cUDv8=6J+@dSy(1e($Lj_S?#@I7K; zNgF*eNK>YX_o@SC(jupOVU)zxW#PSM_-AX(Ds0p!oT@f)IP{2X4^g{aa%wfQmw9(isW@`A{FJsN0hM%NEiIua2=e>SO zq6KAzRp&G=zA52t0Zs1x|L5;2Nf6>N04!_Y zbiMwBrhc-XpN{2K>$4|p(0#i271PkqPYJE;m+r;X_)d_1N%4rfE_IyYZ7VR= zICDD+JPdwM*0Z|xpb1qUw2u3dNkMtR4R zxlKYsa?z8F1}wAFwbmMm>|HEnS2u0cG$^_iX*%-uC2rYqayH)=Yv)&c#v)CLbHE&? zdU1?B(Hz!sZ6hK+Q`$i4_7hPc)u!qX7nVJ;!ovYm^3KW=Yj6K9!c2G0sb(VaQw>~BX{(`XKm zAZy;>NkB0T~8OcX^XKM(A5 zJ~2ePiR!(=fHCbSZ{y8qeT?sZ^pbRDqA5%Ic^eAm=YSB~i<08{^}f|}867WqlE;r{ zAfAG=Z?BdQfwm1FcSRK6SVmO#3GN~1&uE)H_)7OSbYmr9IzxZglu7h}h)3pRQayNY z#9z?1mg1ZDT2Qp|i^x*^*rfmH6vCXUVJiuA(uc}MlV|h$s-eV22Gc#* zVFuBG5=t*g@fgI>A;-aE(gmP?pIBPkndzl_L)IC$c3IXcLHVmL3G%lNl>D}}w}V|L nwB!v&`)3@)Vc`Fb_@mqZO0GWxvNd-dVgO7{PqkF}McDrVX*jDs literal 0 HcmV?d00001 diff --git a/admin/src/assets/link/qqluodi.png b/admin/src/assets/link/qqluodi.png new file mode 100644 index 0000000000000000000000000000000000000000..0647003b22c8caf66bc7afb2557c2630f07c5e9f GIT binary patch literal 48390 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ⅇaAeoCoP**W?!5>MyS})O1$ydn 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 b? +import useForm from '@/hooks/form' +import { onMounted, ref } from 'vue' +import OssImage from '@/components/OssImage.vue' +import MaterialSelect from '@/components/MaterialSelect/MaterialSelect.vue' +import TailorUpload from '@/components/tailorUpload.vue' +import UploadImage from '@/components/uploadImage.vue' +import { ApiDomainEnableList } from '@/api/domain' + +const formRef = ref() +const { formData, formLoading } = useForm({ + formRef, + defVal(detail) { + return { + id: detail?.id, + type: 6, // 类型 + title: detail?.title, + icon: detail?.icon, + remark: detail?.remark, // 备注 + description: detail?.description, //描述 + config: detail?.config + ? detail?.config + : ({ + version: 1, // 1是号码,2是二维码, + nickname: '', + number: '', + qr: '' + } as any) + } + } +}) + +const rules = { + title: [{ required: true, message: '请输入标题', trigger: 'blur' }], + icon: [{ required: true, message: '请上传卡片封面图', trigger: 'blur' }], + 'config.number': [{ required: true, message: '请输入QQ号码', trigger: 'blur' }], + 'config.qr': [{ required: true, message: '请上传QQ二维码', trigger: 'blur' }], + 'config.nickname': [{ required: true, message: '请输入QQ昵称', trigger: 'blur' }], + 'config.domain_id': [{ required: true, message: '请选择域名', trigger: 'blur' }], +} +// 获取域名列表 +const domainList = ref() +const getDomainList = async () => { + domainList.value = await ApiDomainEnableList() +} +onMounted(() => { + getDomainList() +}) + + + + + diff --git a/admin/src/views/link/addLink/components/qq/index.vue b/admin/src/views/link/addLink/components/qq/index.vue new file mode 100644 index 0000000..a62259d --- /dev/null +++ b/admin/src/views/link/addLink/components/qq/index.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/admin/src/views/link/addLink/components/qqGroup/create-or-look.vue b/admin/src/views/link/addLink/components/qqGroup/create-or-look.vue new file mode 100644 index 0000000..f89b758 --- /dev/null +++ b/admin/src/views/link/addLink/components/qqGroup/create-or-look.vue @@ -0,0 +1,221 @@ + + + + + diff --git a/admin/src/views/link/addLink/components/qqGroup/index.vue b/admin/src/views/link/addLink/components/qqGroup/index.vue new file mode 100644 index 0000000..a62259d --- /dev/null +++ b/admin/src/views/link/addLink/components/qqGroup/index.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/serve/app/Enums/MiniProgramType.php b/serve/app/Enums/MiniProgramType.php new file mode 100644 index 0000000..55b37ea --- /dev/null +++ b/serve/app/Enums/MiniProgramType.php @@ -0,0 +1,9 @@ +run($command); + unlink($tmpPath); + + if ($scanResult->failed()) { + Log::error('微信二维码识别失败', ['path' => $path, 'error' => $scanResult->output()]); + + return false; + } + + return trim($scanResult->output()); + } +} diff --git a/serve/resources/install/step1.blade.php b/serve/resources/install/step1.blade.php new file mode 100644 index 0000000..9c3f8db --- /dev/null +++ b/serve/resources/install/step1.blade.php @@ -0,0 +1,99 @@ + + + + + + 火星快链安装 + + + + + +

+
+
+
安装步骤
+
+ + +
+
+ 开源系统授权协议 +
+
+

版权所有(c)2019-,火星快链团队保留所有权利。

+

+

为了正确并合法的使用本软件,请你在使用前务必阅读清楚下面的协议条款:

+

一、本授权协议适用且仅适用于火星快链开源软件产品任何版本。

+

二、协议许可的权利

+

+ 1.免费版本可免费商用,不能私自去除官方版权。付费版本需要取得商业授权方可使用,可以去除官方版权,否则会被视为盗版行为并承担相应法律责任。 +

+

+ 2.请尊重火星快链团队劳动成果,严禁使用本系统转手、转卖、倒卖或二次开发后转手、转卖、倒卖等商业行为。 +

+

+ 3.任何企业和个人不允许对程序代码以任何形式任何目的再发布。 +

+

+ 4.你可以在协议规定的约束和限制范围内修改系列开源软件产品或界面风格以适应你的网站要求。 +

+

+ 5.你拥有使用本软件构建的系统全部内容所有权,并独立承担与这些内容的相关法律义务。 +

+

+ 6.获得商业授权之后,你可以将本软件应用于商业用途,同时依据所购买的授权类型中确定的技术支持内容,自购买时刻起,在技术支持期限内拥有通过指定的方式获得指定范围内的技术支持服务。商业授权用户享有反映和提出意见的权力,相关意见将被作为首要考虑,但没有一定被采纳的承诺或保证。 +

+

三、协议规定的约束和限制

+

+ 1.免费版本可免费商用,不能私自去除官方版权。付费版本需要取得商业授权方可使用,可以去除官方版权,否则会被视为盗版行为并承担相应法律责任。 +

+

+ 2.未经许可,不得对本软件或与之关联的商业授权进行出租、出售、抵押或发放子许可证。 +

+

+ 3.未经许可,禁止在开源系统的整体或任何部分基础上以发展任何派生版本、修改版本或第三方版本用于重新分发。 +

+

+ 4.如果你未能遵守本协议的条款,你的授权将被终止,所被许可的权利将被收回,并承担相应法律责任。 +

+

四、有限担保和免责声明

+

+ 1.本软件及所附带的文件是作为不提供任何明确的或隐含的赔偿或担保的形式提供的。 +

+

+ 2.用户出于自愿而使用本软件,你必须了解使用本软件的风险,在尚未购买产品技术服务之前,我们不承诺对免费用户提供任何形式的技术支持、使用担保,也不承担任何因使用本软件而产生问题的相关责任。 +

+

+ 3.电子文本形式的授权协议如同双方书面签署的协议一样,具有完全的和等同的法律效力。你一旦开始确认本协议并安装本软件,即被视为完全理解并接受本协议的各项条款,在享有上述条款授予的权力的同时,受到相关的约束和限制。协议许可范围以外的行为,将直接违反本授权协议并构成侵权,我们有权随时终止授权,责令停止损害,并保留追究相关责任的权力。 +

+

+ 4.如果本软件带有其它软件的整合API示范例子包,这些文件版权不属于本软件官方,并且这些文件是没经过授权发布的,请参考相关软件的使用许可合法的使用。 +

+

+

+ ----------------------------------------------------- +

+
+
+
+
+
+ + +
+
+
+
+
+
+ Copyright © 2019- +
+ + + diff --git a/serve/resources/install/step2.blade.php b/serve/resources/install/step2.blade.php new file mode 100644 index 0000000..c7fa753 --- /dev/null +++ b/serve/resources/install/step2.blade.php @@ -0,0 +1,221 @@ + + + + + + 火星快链安装 + + + + + +
+
+ @if ($errors->any()) +
+
    + @foreach ($errors->all() as $error) +
  • {{ $error }}
  • + @endforeach +
+
+ @endif +
+
安装步骤
+
+ + + +
+
+
+
+ 服务器信息 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
参数值
服务器操作系统{!! PHP_OS !!}
web服务器环境{!! $_SERVER['SERVER_SOFTWARE'] !!}
PHP版本{!! phpversion() !!}
程序安装目录{!! base_path() !!}
磁盘空间{!! $chk['fred_disk_space'] !!}
上传限制 + @if(ini_get('file_uploads')) + {!! ini_get('upload_max_filesize') !!} + @else + 禁止上传 + @endif +
+
+
+
PHP环境要求必须满足下列所有条件,否则系统或系统部分功能将无法使用。
+
+
+ PHP环境要求 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
选项要求状态
PHP版本≥8.1{!! $chk['php_version'] !!}
PDO_MYSQL支持{!! $chk['pdo_mysql'] !!}
allow_url_fopen支持 (建议支持cURL){!! $chk['curl'] !!}
GD2支持{!! $chk['gd2'] !!}
fileinfo支持{!! $chk['fileinfo'] !!}
putenv支持{!! $chk['putenv'] !!}
symlink支持{!! $chk['symlink'] !!}
proc_open支持{!! $chk['proc_open'] !!}
+
+
+
+ 系统要求安装目录下的storage必须可写,才能使用系统的所有功能。 +
+
+
+ 目录权限监测 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
目录要求状态
/server/storage/logslogs目录可写{!! $chk['log'] !!}
/server/storage/app/publicuploads目录可写{!! $chk['upload'] !!}
/server/storage/frameworkcache目录可写{!! $chk['cache'] !!}
/server/.env.env文件可写{!! $chk['env'] !!}
+
+
+
+
+
+
+
+ 返回 + + + +   + 重新检查 + +
+
+
+
+
+
+ Copyright © 2019- +
+ + + diff --git a/serve/resources/install/step3.blade.php b/serve/resources/install/step3.blade.php new file mode 100644 index 0000000..f6eac0a --- /dev/null +++ b/serve/resources/install/step3.blade.php @@ -0,0 +1,140 @@ + + + + + + 火星快链安装 + + + + + +
+
+ @if ($errors->any()) +
+
    + @foreach ($errors->all() as $error) +
  • {{ $error }}
  • + @endforeach +
+
+ @endif + +
+
安装步骤
+
+ + +
+
+
+ 数据库选项 +
+
+ +
+
+ 数据库主机 +
+
+ +
+
+
+
+ 端口号 +
+
+ +
+
+
+
+ 数据库用户 +
+
+ +
+
+
+
+ 数据库密码 +
+
+ +
+
+
+
+ 数据库名称 +
+
+ +
+
+
+
+
+
+ 管理选项 +
+
+ +
+
+ 管理员账号 +
+
+ +
+
+
+
+ 管理员密码 +
+
+ +
+
+
+
+ 确认密码 +
+
+ +
+
+
+
+
+
+ +
+
+ 返回 + + + +   + 重新检查 + +
+
+ +
+
+
+
+ Copyright © 2019- +
+ + + diff --git a/serve/resources/install/step4.blade.php b/serve/resources/install/step4.blade.php new file mode 100644 index 0000000..d8c0074 --- /dev/null +++ b/serve/resources/install/step4.blade.php @@ -0,0 +1,56 @@ + + + + + + 火星快链安装 + + + + + +
+
+
+
安装步骤
+
+ + + +
+
+
+ 正在安装中 +
+
+ +
+
+ 安装成功 +
+
+
安装完成,进入管理后台
+
+ 为了您站点的安全,安装完成后即可将网站根目录下的“install”文件夹删除。 +
+ +
+
+
+
+
+
+
+
+ Copyright © 2019- +
+ + + diff --git a/serve/services/wechatqr-opencv/README.md b/serve/services/wechatqr-opencv/README.md new file mode 100644 index 0000000..8511cf0 --- /dev/null +++ b/serve/services/wechatqr-opencv/README.md @@ -0,0 +1,5 @@ +## install + +```bash +pip3 install opencv-contrib-python +``` diff --git a/serve/services/wechatqr-opencv/cli.py b/serve/services/wechatqr-opencv/cli.py new file mode 100644 index 0000000..3b5241b --- /dev/null +++ b/serve/services/wechatqr-opencv/cli.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 +import cv2 +import sys +from cv2.wechat_qrcode import WeChatQRCode + + +def qr(new_width, new_height, mode): + resized = cv2.resize(image, (new_width, new_height), interpolation=cv2.INTER_CUBIC) + gray = cv2.cvtColor(resized, mode) # cv2.COLOR_RGB2GRAY + detect_obj = WeChatQRCode() + results, _ = detect_obj.detectAndDecode(gray) + + if len(results) < 1: + return "" + + return results[0] + + +try: + image = cv2.imread(sys.argv[1]) + # 放大multiple倍,转灰度 + img_size = image.shape + new_width = 2000 + new_height = int(img_size[0] * (new_width / img_size[1])) + results = qr(new_width, new_height, cv2.COLOR_RGB2GRAY) + if results == "": + results = qr(new_width, new_height, cv2.COLOR_RGB2HSV) + print(results) + sys.exit(0) + print(results) + sys.exit(0) +except Exception as e: # 捕获具体异常 + print(f"Error occurred: {str(e)}") + sys.exit(1)