【问题标题】:How to create an ipfs hash from an image source?如何从图像源创建 ipfs 哈希?
【发布时间】:2021-06-24 17:12:37
【问题描述】:

我有一个图像的 src(数据),它还没有保存,也没有路径。 我想知道保存并发送到 ipfs 后将产生的未来 ipfs 哈希。

到目前为止,我已经这样做了,但是哈希值不匹配。

import { saveAs } from 'file-saver';
const dagPB = require('ipld-dag-pb')
const UnixFS = require('ipfs-unixfs')

func = async () => {   
    let bgImage = await import(`./images/bg.png`);
    let bodyImage = await import(`./images/body.png`);
    let headImage = await import(`./images/head.png`);
    let eyesImage = await import(`./images/eye.png`);
    let mouthImage = await import(`./images/mouth.png`);
    let levelImage = await import(`./images/level.png`);

    src = await mergeImages([
      bgImage.default,
      bodyImage.default,
      headImage.default,
      eyesImage.default,
      mouthImage.default,
      levelImage.default,
    ]);
    
    image.src = src;
    saveAs(image.src, `photo.png`);
    const fileBuffer = Buffer.from(image.src)
    const file = new UnixFS('file', fileBuffer)

    dagPB.DAGNode.create(file.marshal(), (err, node) => {
     if(err) return console.error(err)
     console.log(node._cid.toBaseEncodedString())
    })
}

有什么遗漏或错误?

【问题讨论】:

    标签: javascript image hash ipfs


    【解决方案1】:

    这就是我所做的。

        const Hash = require('ipfs-only-hash')
    
        func = async () => {   
          let bgImage = await import(`./images/bg${ex}.png`);
          let bodyImage = await import(`./images/body${ex}.png`);
          let headImage = await import(`./images/head${ex}.png`);
          let eyesImage = await import(`./images/eye${ex}.png`);
          let mouthImage = await import(`./images/mouth${ex}.png`);
          let levelImage = await import(`./images/level${ex}.png`);
    
          src = await mergeImages([
            bgImage.default,
            bodyImage.default,
            headImage.default,
            eyesImage.default,
            mouthImage.default,
            levelImage.default,
          ]);
    
          const endOfPrefix = src.indexOf(",");
          const cleanStrData = src.slice(endOfPrefix+1);
          const imageData = Buffer.from(cleanStrData, "base64");
          const imageHash = await Hash.of(imageData);
          console.log("fetch data CID: " + imageHash)
          }
    

    删除数据的头部,只保留数据,然后使用 ipfs-hash-only 对其进行哈希处理。 然后将图像哈希写入 .json 并使用相同的过程对 .json 进行哈希处理并事先知道元数据的 ipfs 地址。

    【讨论】:

      猜你喜欢
      • 2017-04-21
      • 1970-01-01
      • 2019-01-10
      • 2011-04-20
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多