>웹 프론트엔드 >uni-app >uniapp 프로젝트에서 선택한 앨범 사진이 보이지 않는 문제 해결 방법

uniapp 프로젝트에서 선택한 앨범 사진이 보이지 않는 문제 해결 방법

PHPz
PHPz원래의
2023-04-06 14:21:203624검색

유니앱을 사용하여 개발하는 과정에서 앨범 사진 선택 기능을 사용해야 하는 경우가 종종 있습니다. 그런데 선택 후 사진이 표시되지 않는 문제가 가끔 발생합니다. 이번 글에서는 이런 문제가 발생하는 이유와 해결 방법에 대해 설명하겠습니다.

1. 앨범 사진이 표시되지 않는 문제는 왜 발생하나요?

1. 권한 문제

Android 시스템에서는 사진 앨범에 액세스하기 전에 외부 저장소 읽기 권한을 동적으로 신청해야 합니다. 권한 신청이 성공적으로 이루어지지 않으면 앨범에 있는 사진을 읽을 수 없습니다. 따라서 표시할 수 없습니다.

2. 데이터 유형 문제

앨범 사진 선택을 위해 API를 호출할 때 선택한 사진을 로드하려면 배열을 반환해야 하지만 때로는 코드에 데이터 유형이 일치하지 않아 선택한 이미지를 모두 로드할 수 없는 경우가 있습니다. 페이지에 표시됩니다.

3. 경로 문제

앨범에서 선택한 사진을 프런트엔드 페이지로 전송할 때 사진의 경로를 사용하여 표시해야 합니다. 그러나 경로가 잘못 입력되거나 파일 이름이 일치하지 않는 경우 선택한 사진이 정상적으로 표시되지 않습니다.

2. 앨범의 사진이 표시되지 않는 문제를 해결하는 방법은 무엇입니까?

1. 권한 문제 확인

앨범 사진 선택 시 외부 저장소 읽기 권한을 신청해야 합니다. 권한 신청에 실패할 경우 확인해야 합니다. 다음 단계를 통해 권한 문제를 해결할 수 있습니다.

(1) Manifest.json 파일에 외부 저장소 읽기 권한을 추가합니다.

"android": {
    "permission": [
      "android.permission.READ_EXTERNAL_STORAGE"
    ]
  }

(2) 앨범 사진 선택 기능을 사용하려는 페이지에서, uni.requestAuthorize 메소드를 사용하여 권한을 신청하세요:

uni.requestAuthorize({
    scope: 'scope.writePhotosAlbum',
    success() {
        console.log('授权成功')
    },
    fail() {
        console.log('授权失败')
    }
})

2. 데이터 유형 문제 확인

데이터 유형이 일치하지 않으면 선택한 이미지가 페이지에 정상적으로 표시되지 않습니다. 다음 예와 같이 코드에 사용된 데이터 유형에 주의할 필요가 있습니다.

data() {
    return {
       imgList: [],
    }
},
methods: {
    chooseImage(){
        uni.chooseImage({
            count: 3,
            sizeType: ['original', 'compressed'],
            sourceType: ['album', 'camera'],
            success: function (res) {
                this.imgList = res.tempFilePaths; // 选择图片成功后将图片路径存入imgList数组
            }
        })
    }
}

위 코드에서는 선택한 이미지의 임시 경로를 imgList 배열에 저장하므로 선택한 이미지를 표시해야 하는 경우

<view>
    <image v-for="(item,index) in imgList" :src="item"></image>
</view>

위 코드에서는 v-for를 사용하여 imgList 배열의 각 요소를 순회하고 :image 태그를 사용하여 페이지에 이미지를 표시합니다.

3. 경로 문제 확인

이미지 표시 시 참고용으로 올바른 경로를 사용해야 하므로 이미지 경로가 올바른지, 철자 오류 등의 문제가 있는지 주의 깊게 확인해야 합니다. 일반적으로 사진을 선택한 후 반환되는 것은 임시 경로이지만, 사진을 표시할 때는 로컬 경로를 사용해야 합니다. 다음 방법을 통해 로컬 경로를 얻을 수 있습니다.

let realPath = '';
uni.getFileSystemManager().access({
        path: tempFilePaths,
        success() {
            realPath = wx.env.USER_DATA_PATH + '/' + new Date().getTime() + '.png'; //使用 wx.env.USER_DATA_PATH 获取本地存储路径
            uni.getFileSystemManager().saveFile({
                tempFilePath: tempFilePaths, // 临时文件地址
                filePath: realPath,
                success: (res) => {
                        console.log('保存图片到本地成功:' + res.savedFilePath)
                },
                fail: function (res) {
                    console.log(res);
                }
            });
        },
        fail() {
            console.log('访问失败')
        }
});

위 방법을 통해 선택한 이미지를 로컬에 저장하고 성공적으로 저장한 후 콜백 함수를 호출하여 경로를 얻어 표시할 수 있습니다.

요약

유니앱을 사용하여 개발할 때 앨범 사진이 표시되지 않는 현상은 흔히 발생하는 문제입니다. 일반적으로 이 문제는 잘못된 권한, 데이터 유형 또는 경로 등으로 인해 발생합니다. 권한, 데이터 유형 및 경로를 확인하여 이 문제를 해결할 수 있습니다. 이 글이 모든 분들에게 도움이 되고 Uniapp 개발 과정을 더욱 원활하게 만드는 데 도움이 되기를 바랍니다.

위 내용은 uniapp 프로젝트에서 선택한 앨범 사진이 보이지 않는 문제 해결 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.