호랑이 해를 맞아 아바타 프레임을 만들기 위한 작은 프로그램을 단계별로 구현해 보세요(연습)
호랑이 해의 봄 축제가 곧 다가옵니다. 호랑이 해 아바타 프레임을 사진에 추가하는 방법 다음 기사에서는 이 기능을 구현하는 작은 프로그램을 만드는 방법을 보여 드리겠습니다. 당신에게 도움이 됩니다!
한 해의 끝이군요. 시간이 참 빨리 지나가는 것 같아요. 한 해가 눈 깜짝할 사이에 지나가네요.
작년에 전염병으로 인해 새해를 축하하기 위해 집에 가지 못했던 기억이 납니다. 섣달 그믐 날 밤, 가족 위챗 그룹에 게임을 하면서 빨간 봉투를 받기 위한 작은 프로그램을 올렸습니다. 또한 매우 기뻤습니다.
직접 미니게임을 개발한 적은 없지만 최근에는 새해를 맞아 아바타를 바꾸는 친구들을 많이 보았습니다. 다음과 같습니다.
살펴보니 크게 사진 + 사진 프레임 두 부분으로 구성되어 있고 오버레이를 하나의 사진으로 저장하면 하나를 구현할 수도 있습니다.
이 기사는 직접 만든 호랑이 해 아바타 프레임 애플릿입니다.
구현
더 이상 고민하지 말고 렌더링부터 시작해 보겠습니다.
1. 구현 원칙
여기에서 두 장의 사진이 사용된 것을 렌더링에서 볼 수 있습니다.
하나는 "아바타 가져오기" 버튼을 통해 얻은 WeChat 사용자의 아바타입니다.
다른 하나는 사전 제작된 정적 리소스인 액자 사진입니다.
"아바타 저장"을 클릭하면 위의 두 그림을 캔버스를 통해 화판에 그린 다음, 먼저 기본 지도를 그립니다. 그런 다음 액자를 그리고 그림이 완성된 후 로컬에 그림판에 그림을 저장하면 끝입니다.
구체적인 구현 단계는 아래에 소개됩니다.
2. 정적 리소스 수집
이 작은 프로그램에는 아바타 프레임 사진, 홈페이지 배경 사진, 하단 탐색 모음 아이콘 등과 같은 몇 가지 정적 리소스가 내장되어 있습니다.
이 사진은 다음 웹사이트에서 가져온 것이며 참고용입니다.
Alibaba VectorIcon Library
https://www.iconfont.cn/
아이콘을 얻기에 좋은 곳입니다.
Qiantu.com
https://www.58pic.com/
배경 사진, 아바타 프레임 등을 얻을 수 있는 좋은 곳입니다.
3. 코딩
은 세 부분으로 나누어 코딩 단계를 소개합니다.
3.1 WeChat 사용자 아바타 받기
WeChat 애플릿은 WeChat 사용자 정보를 얻기 위한 API를 제공합니다. wx.getUserProfile(객체 개체)
버튼을 클릭하면 WeChat 사용자 정보를 얻을 수 있습니다.
<button bindtap="getUserProfile" class="btn1">获取头像</button>
getUserProfile은 다음과 같이 구현됩니다.
// 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认 getUserProfile(e) { let that = this; wx.getUserProfile({ desc: '仅用于生成头像使用', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写 success: (res) => { //获取高清用户头像 let url = res.userInfo.avatarUrl; while (!isNaN(parseInt(url.substring(url.length - 1, url.length)))) { url = url.substring(0, url.length - 1) } url = url.substring(0, url.length - 1) + "/0"; res.userInfo.avatarUrl = url; that.setData({ userInfo: res.userInfo, hasUserInfo: true }) } }); },
WeChat 사용자 아바타 가져오기가 완료되었습니다.
참고: res.userInfo에서 반환된 사용자 아바타는 기본적으로 저해상도입니다. 사용자 아바타의 고화질 이미지를 얻으려면 처리가 필요합니다.
3.2 그림 그리기
그림 그리기 이미지는 주로 WeChat 애플릿에서 제공하는 캔버스 관련 API를 사용합니다(https://developers.weixin.qq.com/miniprogram/dev/api/canvas/wx.createOffscreenCanvas. html )
변수 설명:
hotArr:[{name:'호랑이 액자의 해',key:'hunian'},{name:'호랑이 머리 모자',key:'shendan'},{ name:'Flag',key:'guoqing'}],
curHot: 현재 선택된 hotArr의 인덱스를 저장하는 데 사용됩니다.
windowWidth: wx.getSystemInfoSync().windowWidth
size: 260; //사용자 정의 크기
pc : wx.createCanvasContext('myCanvas');
drawImg(){ wx.showLoading({ title: '生成头像中...', }) let that = this; let type = this.data.hotArr[this.data.curHot].key; let promise1 = new Promise(function(resolve, reject) { wx.getImageInfo({ src: that.data.userInfo.avatarUrl, success: function(res) { resolve(res); } }) }); var index = that.data.defaultImg; let promise2 = new Promise(function(resolve, reject) { wx.getImageInfo({ src: `../../images/${type}/hat${index}.png`, success: function(res) { resolve(res); } }) }); Promise.all([ promise1, promise2 ]).then(res => { //主要就是计算好各个图文的位置 pc.clearRect(0, 0, windowWidth, size); //绘制背景图 pc.drawImage(res[0].path, windowWidth/2-130, 0, size, size) //绘制相框图 pc.drawImage('../../' + res[1].path, windowWidth/2-130, 0, size, size) pc.stroke() pc.draw(false, () => { //图片绘制成功回调,调用保存canvas方法 this.canvasToTempFile(); }) }) },
wx.getImageInfo() 주로 이미지 정보를 얻는 데 사용됩니다. , 이미지의 로컬 경로를 반환합니다.
이는 주로 drawImage() 가 로컬 이미지 그리기만 지원하기 때문입니다.
3.3 이미지 저장
이전 단계에서는 캔버스에 두 장의 그림을 그렸습니다. 이제 캔버스의 내용을 로컬로 저장하겠습니다.
캔버스의 콘텐츠를 로컬 앨범에 저장하는 것도 두 단계로 나누어집니다.
1단계: 현재 캔버스의 지정된 영역의 내용을 내보내어 지정된 크기의 그림을 생성합니다.
通过使用 wx.canvasToTempFilePath()
第二步:将保存图片本地相册。
通过使用 wx.saveImageToPhotosAlbum(https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.saveImageToPhotosAlbum.html)
canvasToTempFile(){ wx.canvasToTempFilePath({ x: windowWidth/2-130, //这个地方减去130是因为我们的图片尺寸设置的是260 y: 0, height: size, width: size, canvasId: 'myCanvas', success: (res) => { wx.saveImageToPhotosAlbum({ filePath: res.tempFilePath, success: result => { wx.hideLoading(); wx.showModal({ content: '图片已保存到相册,请前往微信去设置哟!', showCancel: false, success: function(res) { if (res.confirm) { console.log('用户点击确定'); } } }) }, fail(e) { wx.hideLoading(); console.log("err:" + e); } }) } }); },
到这里也就实现了基本的头像框功能。
最后
感兴趣的小伙伴可以扫码体验:
当然了,基于上面的内容你也可以制作自己的头像小程序。
最后 提前恭祝大家春节快乐,虎年大吉!!!
【相关学习推荐:小程序开发教程】
위 내용은 호랑이 해를 맞아 아바타 프레임을 만들기 위한 작은 프로그램을 단계별로 구현해 보세요(연습)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제

모바일 인터넷 기술과 스마트폰의 대중화로 인해 WeChat은 사람들의 삶에 없어서는 안될 애플리케이션이 되었습니다. WeChat 미니 프로그램을 사용하면 사람들은 애플리케이션을 다운로드하고 설치하지 않고도 미니 프로그램을 직접 사용하여 몇 가지 간단한 요구 사항을 해결할 수 있습니다. 이 기사에서는 Python을 사용하여 WeChat 애플릿을 개발하는 방법을 소개합니다. 1. 준비 Python을 사용하여 WeChat 애플릿을 개발하기 전에 관련 Python 라이브러리를 설치해야 합니다. 여기서는 wxpy와 itchat 두 라이브러리를 사용하는 것이 좋습니다. wxpy는 위챗 머신입니다

WeChat 미니 프로그램에서 카드 뒤집기 효과 구현 WeChat 미니 프로그램에서 카드 뒤집기 효과를 구현하는 것은 사용자 경험과 인터페이스 상호 작용의 매력을 향상시킬 수 있는 일반적인 애니메이션 효과입니다. 다음은 WeChat 애플릿에서 카드 뒤집기 효과를 구현하는 방법을 자세히 소개하고 관련 코드 예제를 제공합니다. 먼저, 미니 프로그램의 페이지 레이아웃 파일에 두 개의 카드 요소를 정의해야 합니다. 하나는 앞면 내용을 표시하기 위한 것이고 다른 하나는 뒷면 내용을 표시하기 위한 것입니다. <--index.wxml- ->&l

10월 31일 이 사이트의 소식에 따르면 올해 5월 27일 Ant Group은 '한자 선택 프로젝트'를 시작한다고 발표했으며 최근 새로운 진전을 보였습니다. Alipay는 '한자 선택 - 흔하지 않은 문자' 미니 프로그램을 출시했습니다. 희귀 캐릭터는 희귀 캐릭터 라이브러리를 보완하고 희귀 캐릭터에 대한 다양한 입력 경험을 제공하여 Alipay의 희귀 캐릭터 입력 방법을 개선하는 데 도움을 줍니다. 현재 사용자는 "한자픽업", "희귀문자" 등의 키워드를 검색하여 "특수문자" 애플릿에 진입할 수 있습니다. 미니 프로그램에서 사용자는 시스템에서 인식 및 입력되지 않은 희귀 문자의 사진을 제출할 수 있으며 확인 후 Alipay 엔지니어가 글꼴 라이브러리에 추가 항목을 작성합니다. 이 웹사이트에서는 미니 프로그램에서도 최신 문자 분할 입력 방식을 경험할 수 있다고 밝혔습니다. 이 입력 방식은 발음이 불분명한 희귀 문자를 위해 설계되었습니다. 사용자 해체

미니 프로그램은 반응을 사용할 수 있습니다. 사용 방법: 1. "react-reconciler"를 기반으로 렌더러를 구현하고 DSL을 생성합니다. 2. DSL을 구문 분석하고 렌더링하기 위한 미니 프로그램 구성 요소를 만듭니다. 3. npm을 설치하고 개발자를 실행합니다. 도구에서 npm을 빌드합니다. 4. 자신의 페이지에 패키지를 소개한 다음 API를 사용하여 개발을 완료합니다.

유니앱이 미니 프로그램과 H5 사이를 빠르게 전환하려면 구체적인 코드 예제가 필요합니다. 최근 모바일 인터넷의 발전과 스마트폰의 대중화로 인해 미니 프로그램과 H5는 필수 애플리케이션 형태가 되었습니다. 크로스 플랫폼 개발 프레임워크인 uniapp은 코드 세트를 기반으로 작은 프로그램과 H5 간의 변환을 신속하게 실현하여 개발 효율성을 크게 향상시킬 수 있습니다. 이 기사에서는 uniapp이 미니 프로그램과 H5 간의 신속한 변환을 달성하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. 유니앱 유니아 소개

이번 글은 위챗 미니 프로그램과 관련된 몇 가지 이슈를 주로 소개하며, 미니 프로그램에서 공개 계정 템플릿 메시지를 사용하는 방법을 함께 살펴보겠습니다.

구현 아이디어 x01 서버 구축 먼저, 서버 측에서는 소켓을 사용하여 메시지를 수락합니다. 소켓 요청이 수락될 때마다 새 스레드가 열려 메시지 배포 및 수락을 관리합니다. 모든 스레드를 관리하여 채팅방의 다양한 기능 처리를 실현합니다. x02 클라이언트의 설정은 서버보다 훨씬 간단합니다. 클라이언트의 기능은 메시지를 보내고 받는 것뿐이며 특정 문자를 입력하는 것뿐입니다. 따라서 다양한 기능을 사용하려면 클라이언트 측에서 두 개의 스레드만 사용해야 합니다. 하나는 메시지 수신 전용이고 다른 하나는 메시지 전송 전용입니다. 왜냐하면, 오직

PHP 및 미니 프로그램의 지리적 위치 확인 및 지도 표시 지리적 위치 확인 및 지도 표시는 현대 기술에서 필요한 기능 중 하나가 되었습니다. 모바일 장치의 인기로 인해 위치 확인 및 지도 표시에 대한 사람들의 요구도 증가하고 있습니다. 개발 과정에서 PHP와 애플릿은 두 가지 일반적인 기술 선택입니다. 이 기사에서는 PHP 및 미니 프로그램에서 지리적 위치 측위 및 지도 표시 구현 방법을 소개하고 해당 코드 예제를 첨부합니다. 1. PHP의 위치정보 PHP에서는 타사 위치정보를 사용할 수 있습니다.
