如何解决如何从图像源创建 ipfs 哈希?
我有一个图像的 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())
})
}
有什么遗漏或错误?
解决方法
这就是我所做的。
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 地址。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。