簡體   English   中英

[React Native][expo-camera] 損壞的 base64 保存在 Android 上的圖像

[英][React Native][expo-camera] Corrupt base64 saved image on Android

我使用React Native 和 Expo在手機和平板電腦上開發應用程序。 我需要能夠拍照並將其保存到我本地的 SQLite 數據庫中。 我設法拍下照片並保存,然后將其顯示在頁面上。 我使用expo-camera

IOS 一切正常。 但是, Android 上的圖像已損壞 我的圖像保存在 base64 中。 我在 android 和 IOS 上添加了兩個指向結果的鏈接。

IOS 版Android 版

到 base64 的轉換發生在__takePicture中此摘錄的末尾:

    const [startCamera, setStartCamera] = useState(false);
    const [photo, setPhoto] = useState(null);
    const [zoom, setZoom] = useState(0);
    const [hasPermission, setHasPermission] = useState(null);
    const [type, setType] = useState(CameraType.back);
    const [camera, setCamera] = useState(null);

    useEffect(() => {
     (async () => {
        const { status } = await Camera.requestCameraPermissionsAsync();
        setHasPermission(status === 'granted');
      })();
    }, []);

    useEffect(() => {
        __startCamera(props.startCamera);
    }), [startCamera, props.startCamera];

    const __startCamera = async (props) => {
        const { status } = await Camera.requestCameraPermissionsAsync();
        if (status === "granted") {
            setStartCamera(props);
        } else {
            Alert.alert("Action impossible", "Demande d'accès");
        }
    };

    const __takePicture = async () => {
        if (!camera) return;
        const photo = await camera.takePictureAsync({ base64: true });

        setPhoto(photo);

        const manipResult = await manipulateAsync(photo.uri, [], {
            compress: 0,
            format: SaveFormat.JPEG,
            base64: true,
        });

        setPhoto(manipResult);
    };

圖片展示:

<Image
    source={{ uri: photo.uri }}
    resizeMode="cover"
    style={{
        width: "80%",
        height: "80%",
        backgroundColor: "black",
        borderWidth: 5,
        borderRadius: 10,
    }}
/>

你知道問題出在哪里嗎? 感謝您的時間。

Timotius 從 Discord Reactiflux 服務器提供的答案對我有用:將compress: 0更改為compress: 1

他從他們的文檔中帶回的另一個可能被證明有用的元素:“SaveFormat.PNG 壓縮是無損但速度較慢,SaveFormat.JPEG 更快但圖像有可見的偽影。默認為 SaveFormat.JPEG”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM