微信小程序&PHP 生成小程序码分享图 并保存在手机相册

不会ps,你也可以成为ps高手,最强傻瓜式人像一键磨皮美白瘦脸美妆PS插件 比如:美肤是用来去斑点的,如果效果不太理想,就加大百分比,反之就减小。瘦脸如果脸胖的就打开,正常的就关闭。所谓的一键调节,要不只能调节一种效果,要不就是个预设,然后让你自己再调。同时,该软件还加入了贴心的批量处理功能,能同时处理上千张照片,让您喝着茶也能将工作做完。、自动检测照片中的人脸,包括鼻子,嘴巴,耳朵,眼睛和眉毛。、依托强大的脸部识别功能,可以高效的对人物全身皮肤进行智能识别,处理,使肤质平滑、过渡均匀。,这是网上下载的模糊照片,经过简单处理,你可以发现,眼睛变的更亮,皮肤更白,眼袋消失。 阅读详情

注意:小程序端如果想保存成图片,需要用画布,但是如果想把图片放在画布上,真机上需要先把图片保存到本地。

解决方法:使用缓存文件!!!!!

小程序端:

  .js  前端数据处理

import util from '../../../utils/util' //下文贴出,公共方法
var image = require('../../../utils/util.js'); 
//获取全局变量
const app = getApp(); 
Page({
  data: {
    
    allthing: app.globalData,
  },
  onLoad: function (options) {
    var that = this;
    var imageSize = image.image()

    that.setData({
      imageWidth: imageSize.imageWidth,
      imageHeight: imageSize.imageHeight,
      chaWidth: imageSize.chaWidth,
      chaHeight: imageSize.chaHeight,
    })

    //获取头像
    that.getAvatarUrl(that.data.allthing.userInfo.avatarUrl)

    //获取特定页面的小程序码
    that.getSpecialM()

    //获取背景图
    that.getBackground()

    //获取头像框
    that.getTouground()

    wx.showToast({
      title: '正在生成图片',
      icon: 'loading',
      duration: 10000,
    })
    
    //延迟执行,避免请求文件无效
    setTimeout(function () {           
      console.log("----Countdown----")
        //生成图片
      that.createImg()
      wx.hideToast()
    }, 1000)
  },

  /**
   * 获取特定页面的小程序码
   */
  getSpecialM:function(){
    var that = this
    //请求获取小程序码
    wx.request({
      method: 'GET',
      url: 'https://www.a******_code.php?sid=' + that.data.userInfo.subject_id,
      header: {
        'content-type': 'application/json'
      },
      success: function (res) {
        wx.downloadFile({
          url: res.data.data.url,
          success: function (res) {
            that.setData({
              icon4: res.tempFilePath,
            })
          },
          fail: function () {
            console.log('fail')
          }
        })
      }
  })
},

  /**
   * 获取头像
   */
  getAvatarUrl: function (avatarUrl){
    var that = this
    //保存头像
    wx.downloadFile({
      url:avatarUrl,
      success: function (res) {
        that.setData({
          exam: res.tempFilePath,
        })
      },
      fail: function () {
        console.log('fail')
      }
    })
  },

  /**
   * 获取背景
   */
  getBackground: function () {
    var that = this
    wx.downloadFile({
      url: 'https://app.c***answer/2.png',
      success: function (res) {
        that.setData({
          share: res.tempFilePath,
        })
      },
      fail: function () {
        console.log('fail')
      }
    })
  },

  /**
   * 获取头像框
   */
  getTouground: function () {
    var that = this
    wx.downloadFile({
      url: 'https://app.ci1*******er/phot.png',
      success: function (res) {
        that.setData({
          phot: res.tempFilePath,
        })
      },
      fail: function () {
        console.log('fail')
      }
    })
  },

  /**
   * 生成画布
   */
  createImg:function(){
    var that  = this 
    var ctx = wx.createCanvasContext('myCanvas');
    ctx.setFillStyle('White')
    ctx.fillRect(0, 0, 300, 400)
    ctx.drawImage(that.data.icon4, 115 + that.data.chaWidth / 2, 153 + that.data.chaHeight / 2, 92, 92)
    ctx.drawImage(that.data.share, 0, 0, that.data.imageWidth, that.data.imageHeight)
    ctx.drawImage(that.data.exam, 138 + that.data.chaWidth / 2, 10 , 50, 50)
    ctx.drawImage(that.data.phot, 138 + that.data.chaWidth / 2, 10, 50, 50)
    ctx.draw();
  },

    //保存图片触发事件
  savePic: function () {       
    var that = this
    wx.canvasToTempFilePath({
      width: that.data.imageWidth,
      height: that.data.imageHeight,
      canvasId: 'myCanvas',
      success: function (res) {
        util.savePicToAlbum(res.tempFilePath)
      }
    })
    setTimeout(function () {
      console.log("----Countdown----")
      wx.redirectTo({
        url: '/pages/my/my/my',
      })
    }, 1000)
   
  }
})


.wxml  前端展现形式

 

<view>
    <canvas style="width:{{imageWidth}}px;height:{{imageHeight}}px" canvas-id="myCanvas" class='canvas'></canvas>
    <!--测试按钮-->
    <view class="edit-footer">
        <button class="button-done" type="primary" bindtap="savePic">保存图片</button>
    </view>
</view>

 

util.js  公用方法

 

function savePicToAlbum(tempFilePath) {
  let that = this;
  wx.getSetting({
    success(res) {
      if (!res.authSetting['scope.writePhotosAlbum']) {
        //授权
        wx.authorize({
          scope: 'scope.writePhotosAlbum',
          success() {
            wx.saveImageToPhotosAlbum({
              filePath: tempFilePath,
              success(res) {
                wx.showToast({
                  title: '保存成功'
                });
              },
              fail(res) {
                console.log(res);
              }
            })
          },
          fail() {
            // 用户拒绝授权,打开设置页面
            wx.openSetting({
              success: function (data) {
                console.log("openSetting: success");
              },
              fail: function (data) {
                console.log("openSetting: fail");
              }
            });
          }
        })
      } else {
        wx.saveImageToPhotosAlbum({
          filePath: tempFilePath,
          success(res) {
            wx.showToast({
              title: '保存成功',
            });
          },
          fail(res) {
            console.log(res);
          }
        })
      }
    },
    fail(res) {
      console.log(res);
    }
  })
}
function image() {
  var imageSize = {};
    //图片高宽比
  var originalScale = 0.2;  
  //获取屏幕宽高  
  wx.getSystemInfo({
    success: function (res) {
      var windowWidth = res.windowWidth;
      var windowHeight = res.windowHeight;
      //屏幕高宽比
      var windowscale = windowHeight / windowWidth;  
      console.log('windowWidth: ' + windowWidth)
      console.log('windowHeight: ' + windowHeight)
       //图片高宽比小于屏幕高宽比  
      if (originalScale < windowscale) {
        //图片缩放后的宽为屏幕宽  
        imageSize.imageWidth = windowWidth;
        imageSize.imageHeight = (windowWidth * 400) / 320;
        imageSize.chaWidth = windowWidth-320; 
        imageSize.chaHeight = (windowWidth * 400) / 320 - 400; 
      } else {//图片高宽比大于屏幕高宽比  
        //图片缩放后的高为屏幕高  
        imageSize.imageHeight = windowHeight;
        imageSize.imageWidth = (windowHeight * 320) / 400;
        imageSize.chaWidth = windowWidth - 320;
        imageSize.chaHeight = (windowWidth * 400) / 320 - 400; 
      }

    }
  })
  console.log('缩放后的宽: ' + imageSize.imageWidth)
  console.log('缩放后的高: ' + imageSize.imageHeight)
  return imageSize;
}
module.exports = {
  formatTime: formatTime,
  savePicToAlbum: savePicToAlbum,
  image:image
}


服务器端

 

create_wxa_code.php  发起请求获取页面小程序码并保存到服务器,返回网络地址。

 

<?php
include_once('/opt*****/function.php');
//$appid和$secret保存其中
include_once('/opt*****n/config.php');
$sid = addslashes($_GET['sid']);
//token存在缓存中
$access_token=M::Get('q*******en_'.$appid);
if(!$access_token){
        $url_access_token = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$secret;
        $json_access_token = sendCmd($url_access_token,array());
        //access_token加缓存
        $arr_access_token = json_decode($json_access_token,true);
        $access_token = $arr_access_token['access_token'];
        M::Set('q******ken_'.$appid,$access_token,3600);
}
if(!empty($access_token)) {
    //请求获取带有参数的小程序码
	$url = 'https://api.weixin.qq.com/wxa/getwxacode?access_token='.$access_token;    
 	$data = '{"path": "/pages/a*****/index?id='.$sid.'", "width":430}';
     	$result = sendCmd($url,$data);

	$dir = "/opt/c******wxaapp/";
	$path = $dir.date("Y/m/d/")."/".rand(1,50)."/";
	create_dirs($path,0777);
	$file_name = time().".png";
		
	file_put_contents($path.$file_name,$result);
	$url = 'https://www.q****om/'.str_replace('/op*****baby/','',$path.$file_name);
    
    //返回保存在服务器中小程序码的地址
	$arr = array('ret'=>1,
		'msg'=>'success',
		'data'=>array('url'=>$url),   
		);
} else {
	$arr = array('ret'=>0,'msg'=>'ACCESS TOKEN为空!');
}
	echo json_encode($arr);


/**
 * 发起请求
 * @param  string $url  请求地址
 * @param  string $data 请求数据包
 * @return   string      请求返回数据
 */
function sendCmd($url,$data)
{
    $curl = curl_init(); // 启动一个CURL会话      
    curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址                  
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检测    
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在      
    curl_setopt($curl, CURLOPT_HTTPHEADER, array('Expect:')); //解决数据包大不能提交     
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转      
    curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer      
    curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求      
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包      
    curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循     
    curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容      
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回 
           
    $tmpInfo = curl_exec($curl); // 执行操作      
    if (curl_errno($curl)) {      
       echo 'Errno'.curl_error($curl);      
    }      
    curl_close($curl); // 关键CURL会话      
    return $tmpInfo; // 返回数据      
}
?>

 

 

 

 

 

 

flink定位反压节点 在 Apache Flink 中定位反压(Backpressure)节点需要结合监控工具和作业行为分析。 阅读详情

相关推荐

Mac OS X 工具技巧:一文搞定个性化命令行窗口(iTerm2 + zsh + oh-my-zsh 配置Powerline风格)

本不想写这篇文章的,因为在Linux下已经配置过很多次,想着mac应该找篇文章一次就搞定了,结果还是踩坑,看了很多文章,不是某一点没不清楚,就是截图有问题或者命令有问题,官网又难得找等等……花了3个多小时才搞定,所以,还是来总结一篇文章就能够搞定的教程。 为什么要用zsh?用了这么多年的bash,不能说bash不好,不过当我用了zsh后发现,什么叫更好用。 配置过程稍微有点繁琐,但是你看过效果...

mickjoust的技术小屋 1万+

微信小程序开发实战:实现图片保存到手机相册的方法

微信小程序开发实战:实现图片保存到手机相册的方法

希望看完文章的你能够带着答案离开。 1万+

别再傻傻分不清!Synopsys DC综合中link/target/symbol/synthetic四大库的保姆级配置指南

本文详细解析了Synopsys DC综合中link_library、target_library、symbol_library和synthetic_library四大库的配置方法,帮助工程师避免常见错误。通过实战示例和调试技巧,指导如何正确设置工艺库与IP库,提升数字芯片设计效率。

weixin_42562079的博客 422

【PHP】php生成小程序二维码与内容分享图

php生成小程序二维码、合成图片 本文是在laravel框架下实现 首先查看小程序生成二维码的文档,拿到api,这里需要access_token,ok先拿token 获取access_token 在文档中拿到获取token的api后,配置好小程序appid、secret 这里运用的是laravel微信扩展(查看文档EasyWeChat),如下在根目录下.env文件中配置好appid、secret WX_APP_ID = wxxxxxxxxxxxxx5919 WX_APP_SECRET = b2768f

Y.Cheng的博客 1469

别再死记硬背Payload了!深入理解Flask/Jinja2 SSTI的Python对象继承链与魔术方法

本文深入解析Flask/Jinja2 SSTI漏洞的底层原理,从Python对象模型出发,详细讲解如何通过魔术方法链实现RCE。文章揭示了Python对象继承链与魔术方法的精妙设计,提供了防御与绕过SSTI漏洞的实用技巧,帮助开发者深入理解漏洞本质并采取有效防护措施。

weixin_42525738的博客 356

【KITTI数据集中Raw_Data数据标定文件中的参数关系解读】

上一节本人将KITTI Odometry数据集中的参数文件进行了解释。本节主要针对一些做融合slam的人,将Raw_Data数据标定文件中的参数按照自己的理解做如下阐述。其中,所讲之处如有错误,欢迎各位批评指正。

weixin_43389152的博客 1526

微信小程序第四篇:生成图片并保存到手机相册

刚刚我们封装了顶部的分享组件,那现在就要去定义保存图片到相册的方法了,我们写代码的时候一定要考虑清楚这段代码是否是可复用的,是否应该剥离出去。显然保存图片到相册这个方法我们应该写在 utils 目录中,因为有很多其他的场景都可以用这个方法,那我们就封装一个公用方法,参数就是图片的地址,成功的回调函数和失败的回调函数。wx.getSetting ({ // 查询所有授权if (res.authSetting['scope.writePhotosAlbum']) { // 用户已经授权。

qq_49900295的博客 9410

NT35310 LCD屏的初始化与图形显示实战:从画点到UI设计的完整指南

本文详细介绍了NT35310 LCD屏的初始化与图形显示实战,从硬件配置到UI设计全流程。内容包括8080总线连接、初始化序列、基础图形绘制算法、显示优化技巧以及UI框架实现,帮助开发者快速掌握TFT-LCD驱动开发技术,适用于工业控制和智能家居等嵌入式应用场景。

table的专栏 370

微信小程序 APP 分享图片给微信好友 保存图片至本地相册 分为了两个模块 上面是一个轮播图 下面是二维码 保存时要合成一张图片 保存图片到本地相册(保存div模块为图片到本地,将页面某一块截图保存)

先看图 (c+v即可运行,把引入的接口文件改成自己的就行)

m0_70782896的博客 1153

YOLO26 正式发布源代码!极致速度优化方案, 面向工业级落地的目标检测模型!

YOLO26 作为 Ultralytics 公司于 2025 年 9 月发布的最新一代目标检测模型,在架构设计和技术实现上展现了显著的创新。本文深入分析了 YOLO26 的核心架构改进和技术原理,重点探讨了其在边界框回归、推理流程、损失函数设计和优化算法方面的突破性进展。

魔改工程师的博客 1243

RK3576 调试ov2735 mipi-csi摄像头

摘要:本文记录了基于RK3576平台调试OV2735 MIPI摄像头的全过程。开发环境采用Linux 6.1内核和Buildroot文件系统。调试步骤包括:1)硬件检查(电源、晶振和引脚连接);2)驱动配置(设备树节点、ISP通道设置);3)驱动验证(通过ID检测和I2C工具测试);4)推流测试(使用v4l2和gstreamer工具)。重点解决了复位引脚配置、时钟命名匹配等关键问题,并通过寄存器检查确保初始化正常。最终实现了摄像头数据流的成功输出,为嵌入式视觉应用开发提供了完整参考方案。

qq_45147279的博客 1060

微信小程序分享图片给微信好友(如二维码)

微信小程序分享图片给微信好友(如二维码)最近在公司开发一个微信小程序项目,用到的uniapp技术,在分享图片时,查看了uniapp的技术文档,写的还是很粗糙的,说得不太清楚,在我看了一个下午得出了一个结论,uniapp并没有封装可以转发图片到微信好友中的api。提示:以下是本篇文章正文内容,下面案例可供参考。

weixin_54079103的博客 8490

BOSS直聘数据采集、解析处理、分析与可视化实战

招聘和求职是一对永恒的话题,不论什么时候都有招聘或者是求职的需求,找不找得到工作可能最主要的就是匹配度是否高,待遇福利是否诱人,如今互联网的快速发展,找工作的方式早已发生了翻天覆地的变化,从以往的面对面形式的招聘简历投递和面试方式,变成了电子简历网络直接投递、远程面试录用的形式,便捷性大大提升,需求的快速增长,促生了一批互联网招聘类的企业,诸如:51job、BOSS直聘、拉勾网等等,为了能...

Together_CZ的博客 9022

php小程序码生成并保存,微信小程序&PHP 生成小程序码分享图 并保存在手机相册...

注意:小程序端如果想保存成图片,需要用画布,但是如果想把图片放在画布上,真机上需要先把图片保存到本地。解决方法:使用缓存文件!!!!!小程序端:.js 小程序前端数据处理import util from '../../../utils/util' //下文贴出,公共方法var image = require('../../../utils/util.js');//获取全局变量const app ...

weixin_33735281的博客 580

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

H5保存图片到相册

H5保存图片到相册

weixin_58031521的博客 5704

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

background图片不显示_微信小程序前端生成图片用于分享朋友圈最终解决方案

前段时间一直在做微信小程序的,遇到了许多的坑,其中遇到了需要前端合成图片保存到相册用于分享到朋友圈。借简书记录一下最终解决方案,先看一下最终效果该文章的所有演示代码托管与github,代码地址,微信调试工具中访问请关闭合法域名检查,开启es6转换,真机调试请打开调试vconsole该文章解决的问题如下:1、微信小程序生成图片,并保存到相册2、微信小程序生成图片实现响应式3、微信小程序ca...

weixin_39901558的博客 350

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

VUE微信H5生成二维码海报保存在本地相册

公司需求:宣传海报从后台获取,二维码地址也从后台获得,然后生成一个海报,海报上固定位置放二维码,长按图片可以保存在本地相册(其实前面的需求是点击按钮,下载海报图到本地相册,然后h5下载的实现原理是生成一个a标签链接,然后下载,在电脑模拟器可以下载,在微信浏览器一点反应没有,所以退一步,长按保存),下面是使用版本,UI插件用的是vant(有赞)vue:“^2.6.11”,“html2canvas”: “1.4.1”,“vant”: “^2.8.1”,“vue_qrcodes”: “^1.1.3”从后端获取海报

yuanqi3131的博客 5167

前端Vue H5生成带二维码的分享海报,实现长按保存到手机相册

前端Vue H5生成带二维码的分享海报,实现长按保存到手机相册 前言:关于H5分享海报的需求,经常会遇到,通常就是一个分享的二维码+分享文案,生成一张图片,供用户在手机上长按保存到手机,然后就可以将保存的图片发给别人,实现扫码进入分享页,从而实现分佣、引流等目的。 目标海报: 实现思路步骤: a:二维码的生成; b:图片的生成; c:用户可长按的同时不影响查看分享效果(即当分享海报较长时,可以滚动查看)。 根据上述思路步骤: 1,使用qrcodejs2生成二维码; 安装: npm install qr

cd13849109771的博客 1万+

用canvas绘制微信小程序海报页面并保存相册-适用微信原生

微信小程序如何绘制全屏海报,并保存到相册

qq_43205326的博客 6900

微信小程序 | 使用 canvas 生成朋友圈分享图片并保存到手机相册

小程序只能转发给好友,或者转发到微信群,并不能转发到朋友圈,那么朋友圈的巨大流量应该怎么利用起来呢? 目前来看,很多小程序的做法是生成一张带小程序码的图片,然后用户可以分享图片到朋友圈,通过这样的方式来导朋友圈的流量。 但是这样做还是有一定风险的,有可能会被腾讯打上诱导分享的标签,具体可以做到什么程度还不是很清楚。 怎样生成图片并保存呢?这篇文章做一些简单的尝试,生成一个带文字和小程序码的图片,...

weixin_34277853的博客 571

微信小程序实现将图片保存到手机相册

首先我们需要调用 wx.downloadFile 方法下载文件资源到本地,然后利用 wx.saveImageToPhotosAlbum 方法保存图片到系统相册,需要注意的是这样写很可能会因为没有权限而导致下载不了图片,所以我们最后还需要给接口一个调用失败的回调函数,以此来获取权限,最后这个小功能就实现啦。imgUrl: "https://s1.ax1x.com/2022/04/11/LV4c4J.jpg", //模拟图片。title: '提示',url: this.data.imgUrl, //图片地址。

aaa123aaasqw的博客 3040

PHP生成带头像的二维码

  &lt;?php require_once 'phpqrcode.php'; QRcode::png('http://www.baidu.com', 'filename.png',QR_ECLEVEL_L,100); // creates file $QR = imagecreatefrompng("filename.png"); $logo = imagecreat...

tankmarshal的专栏 705

php生成微信分享图片,PHP实现微信自定义分享图片,标题,描述

PHP实现微信自定义分享图片,标题,描述weshare.php// 步骤1.设置appid和appsecret$appid = 'wxabcddefjfgghg';$appsecret = 'fdsfagewafasdf125f1d5f15e3fc';// 步骤2.生成签名的随机串function nonceStr($length){$str = '0123456789abcdefghijklmn...

weixin_35851654的博客 622

微信小程序canvars生成图片及保存图片

微信小程序中canvars要使用线上图片需要到小程序后台配置download域名 试列 html部分 <view class="container"> <button class="btn" bindtap="showPopup">显示海报</button> <van-popup round="{{ false }}" show="{{ showPop }}" position="center" bin..

qq_53196626的博客 884

小程序基本命令

onLoad: function () { // 生命周期函数--监听页面加载 onReady: function () { // 生命周期函数--监听页面初次渲染完成 }, onShow: function () { // 生命周期函数--监听页面显示 }, onHide: function () { // 生命周期函数--监...

aiven1637的博客 3558

记录一下PHP生成小程序海报(含转圆角的微信头像和小程序二维码)

记录一下PHP 图片转圆形 在这里插入代码片 <?php /* * @fun 图片转换成圆形png,传入源路径和转换后的路径,均用相对于当前程序文件的路径 * @memo 对于非正方形的图片,以短边作为图片的直径 * @param string $src 源路径 * @param string $dst 转换后的路径 * @return void * @call z_image2circle("circleimage.jpg", './circleimage-'.uniqid().

weixin_44779466的博客 889
上一篇: 微信小程序&PHP 改变小程序码中间logo的方法
下一篇: 微信小程序&PHP 发送模板消息通知
阿……莫西林
博客等级 码龄9年 42粉丝 111原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值