react-native-image-picker 上傳ios實況圖(.HEIC格式)報錯(蘋果7以上)

1.安裝HEIC轉(zhuǎn)化JPG:react-native-heic-converter

https://github.com/maxim-kolesnikov/react-native-heic-converter

npm install react-native-heic-converter --save

react-native link react-native-heic-converter

2.源代碼


import ImagePicker from 'react-native-image-picker';

import RNHeicConverter from 'react-native-heic-converter';

ImagePicker.launchImageLibrary(options, (response) => {

????if (response.didCancel) {

????????console.log('User cancelled image picker');

????} else if (response.error) {

????????console.log('ImagePicker Error: ', response.error);

????} else {

????????let source = {}

? ????? //判斷是不是HEIC文件

????????if (Platform.OS === 'ios' && (response.fileName.endsWith('.heic') || response.fileName.endsWith('.HEIC'))) {

? ? ? ? ? ? //根據(jù)origURL轉(zhuǎn)換成JPG圖片: 這有個雷區(qū),剛開始使用的response.uri.在IOS中uri的heic文件后綴也是JPG,所以不能使用。查看API后,應該使用origURL。(origURLT:he URL of the original asset in photo library, if it exists)

????????????RNHeicConverter.convert({ path: response.origURL }).then((data) => {

????????????????const { success, path, error } = data

????????????????if(!error && success && path) {

????????????????????let name = response.fileName

????????????????????name = name.replace(".heic", ".jpg")

????????????????????name = name.replace(".HEIC", ".jpg")

????????????????????source = {uri: path, name}

????????????????????this.handleChange(source)

????????????????????this.setState({ loading: false });

????????????????} else {

????????????????????Toast.show({text: "heic類型轉(zhuǎn)jpg失敗!"});

????????????????}

????????????});

? ? ? ? } else {

????????????????source = {uri: response.uri, type: response.type, name: response.fileName}

????????????????this.handleChange(source) this.setState({ loading: false });

????????}

}

});


?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容