Преобразовать буферный массив в изображение - PullRequest
0 голосов
/ 27 марта 2020

У меня есть следующий код на сервере express, чтобы прочитать изображение и отправить его клиенту через API

router.get("/file",async (req,res)=>{
    const objImg = {img:null}
    const result = await SELECT("...");
    if(result.length>0){        
        var bitMap= fs.readFileSync(`./src/logosClient/${result.nombImg}`)        
        objImg.img=new Buffer.from(bitMap,"base64")
    }
    res.json(objImg)
})

Данные API поступают следующим образом

data: {type: "Buffer", данные: [137, 80, 78, 71, 13, 10 , 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 192, 0, 0, 0, 46, 8, 6 ......]}

В моем ReactJs клиенте у меня есть следующий код для его получения

    import React, {useEffect, useState} from 'react';
    import muestra from '../../../../resources/images/muestra.png'
    
    const Index = () => {
    const [previewImg, setPreviewImg] = useState(null) 
    
    useEffect(()=>{        
        RunApi("/generales/file","GET",null,null).then(result=>{
            if(result.img){
                setPreviewImg("data:image/png;base64," + result.img.data)
            }
        }).catch(error=>{
            addToast("error","Error",error)
        })
    },[])
    
    return(
      <img src={previewImg?previewImg:muestra} className="align-self-center mr-3" alt="..."/>
    )
    
}

Я не вижу изображения, но оно также не генерирует сообщение об ошибке

1 Ответ

1 голос
/ 27 марта 2020

Попробуйте преобразовать ваше изображение в строку base64, например

objImg.img = new Buffer.from(bitMap).toString("base64")

, а затем установите свое состояние, например

setPreviewImg("data:image/png;base64," + result.img)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...