> 위챗 애플릿 > 미니 프로그램 개발 > 미니프로그램에서 Base64 이미지를 앨범에 저장하는 방법 소개

미니프로그램에서 Base64 이미지를 앨범에 저장하는 방법 소개

不言
풀어 주다: 2018-12-14 10:30:28
앞으로
5608명이 탐색했습니다.

이 기사는 미니 프로그램에서 Base64 이미지를 앨범에 저장하는 방법을 소개합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

1. 권한 획득

1. 관련 api
wx.getSetting
wx.authorize

2. 권한 취득 절차는 일반적으로
권한이 있는지 여부——> 그렇지 않은 경우——> 해당 API를 사용합니다. 🎜#(사용자가 인증을 거부하는 경우 wx.opensetting을 사용하여 인증을 위한 인증 설정 페이지로 사용자를 안내할 수 있습니다.)

3 코드 구현

static async weAuthCheck(type = 'address') {
    let resGetting = await new Promise((resolve, reject) => {
        wepy.getSetting({
            success: res => {
                // console.log(res, 'getsetting')
                if (res.authSetting.hasOwnProperty(`scope.${type}`) && res.authSetting[`scope.${type}`]) {
                    resolve({
                        succeeded: true
                    })
                } else {
                    wepy.authorize({
                        scope: `scope.${type}`,
                        success: () => {
                            resolve({
                                succeeded: true
                            })
                        },
                        fail: err => {
                            // console.log(err, 'errrrr')
                            resolve({
                                succeeded: false,
                                err: err
                            })
                        }
                    })
                }
            },
            fail: err => {
                resolve({
                    succeeded: false,
                    err: err
                })
            }
        })
    })
    console.log('getSetting res: \n', resGetting)
    return resGetting
}
로그인 후 복사
# 🎜🎜# 2. 임시 파일 쓰기

1. 관련 api

file system

writeFile

2. 인코딩 형식으로 데이터를 쓰는 것이 아니라 작성된 매개변수 데이터의 형식을 설명합니다. 여기서는 인코딩을 base64

3으로 지정해야 합니다. 코드 구현

// 先获得一个实例  this.fileManager = wx.getFileSystemManager()
this.fileManager.writeFile({
    filePath: `${wx.env.USER_DATA_PATH}/qrcode_${timestamp}.png`,
    data: data,
    encoding: 'base64',
    success: res => {
        console.log('res: \n:', res)
    },
    fail: res => {
        console.log(res)
    }
})
로그인 후 복사

3 형식 문자열

#🎜🎜 #1. base64 문자열의 형식: "data:image/png;base64,..........", 쉼표 앞의 단락은 형식 설명으로, 후속 콘텐츠 형식이 이미지 형식: png의 Base64 형식입니다.

2. 전체 문자열을 직접 전달하면 성공적으로 저장할 수 있지만 이미지 파일 형식 오류가 발생합니다. 그럼 또 다른 컷팅 작업을 진행해 보세요

let startIdx = this.qrcode.indexOf('base64,') + 7
로그인 후 복사

넷째, 구현 완료

async onTapSaveQrcode() {
    let startIdx = this.qrcode.indexOf('base64,') + 7
    let resCheck = await this.$weAuthCheck('writePhotosAlbum')
    let timestamp = new Date().getTime()
    let self = this
    if (resCheck.succeeded) {
        wepy.showLoading()
        this.fileManager.writeFile({
            filePath: `${wx.env.USER_DATA_PATH}/qrcode_${timestamp}.png`,
            data: this.qrcode.slice(startIdx),
            encoding: 'base64',
            success: res => {
                console.log('res: \n:', res)
                wx.saveImageToPhotosAlbum({
                    filePath: `${wx.env.USER_DATA_PATH}/qrcode_${timestamp}.png`,
                    success: res => {
                        self.$emit('save-qrcode-success')
                        wepy.showToast({
                            title: '保存成功'
                        })
                    },
                    fail: err => {
                        console.log(err)
                        if (!err.errMsg.includes('cancel')) {
                            wepy.showToast({
                                title: err.errMsg,
                                icon: 'none'
                            })
                        }
                    },
                    complete: () => {
                        wepy.hideLoading()
                    }
                })
            },
            fail: res => {
                wepy.hideLoading()
                console.log(res)
            }
        })
    }
}
로그인 후 복사

위 내용은 미니프로그램에서 Base64 이미지를 앨범에 저장하는 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:segmentfault.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿