首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将图像url转换为Javascript中的blob

将图像url转换为Javascript中的blob
EN

Stack Overflow用户
提问于 2020-03-04 04:56:04
回答 1查看 3K关注 0票数 2

如何将图像的文字url转换为blob?

代码语言:javascript
复制
emoji.url = "https://e.mirror-ai.net/mj/en/PcW59GJ5T2SpEtPEFRADWA/yB4/154725046.png"

const imageUrlToBlob = url => {
  
};

const zipAndSave = async emojis => {
  const zip = new JSZip();
  for (var emoji of emojis) {
    let emojiFile = imageUrlToBlob(emoji.url);
    zip.file(emoji.name, emojiFile);
  }
  const zipped = await zip.generateAsync({ type: "blob" });
  saveAs(zipped, "emojis.zip");
};
EN

回答 1

Stack Overflow用户

发布于 2020-03-04 21:54:08

开始工作了。对于遇到此问题的任何人,这里有一个代码示例:

zipAndSaveEmojis.js

代码语言:javascript
复制
import axios from "axios";
import JSZip from "jszip";
import { saveAs } from "file-saver";

const b64toBlob = (b64Data, contentType = "", sliceSize = 512) => {
  const byteCharacters = atob(b64Data);
  const byteArrays = [];
  for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
    const slice = byteCharacters.slice(offset, offset + sliceSize);
    const byteNumbers = new Array(slice.length);
    for (let i = 0; i < slice.length; i++) {
      byteNumbers[i] = slice.charCodeAt(i);
    }
    const byteArray = new Uint8Array(byteNumbers);
    byteArrays.push(byteArray);
  }
  const blob = new Blob(byteArrays, { type: contentType });
  return blob;
};

const zipAndSaveEmojis = async emojis => {
  const zip = new JSZip();
  let downloadedEmojis;
  try {
    const res = await axios({
      method: "post",
      url: "http://localhost:5000/getEmojis",
      data: { emojis }
    });
    downloadedEmojis = res.data.map(emoji => {
      return {
        data: b64toBlob(emoji.base64),
        name: emoji.name
      };
    });
  } catch (err) {
    console.error(err);
  }
  downloadedEmojis.map(emoji => zip.file(emoji.name, emoji.data));
  const zipped = await zip.generateAsync({ type: "blob" });
  saveAs(zipped, "emojis.zip");
};

export { zipAndSaveEmojis };

server.js

代码语言:javascript
复制
// import express (after npm install express)
const express = require("express");
const cors = require("cors");
const axios = require("axios");

// create new express app and save it as "app"
const app = express();

app.use(express.json({ extended: true }));
app.use(cors({ origin: "http://localhost:3000" }));

// server configuration
const PORT = 5000;

// create a route for the app
app.post("/getEmojis", async (req, res) => {
  let emojis = [];
  for (var emoji of req.body.emojis) {
    const res = await axios(emoji.url, {
      responseType: "arraybuffer"
    });
    emojis.push({
      base64: Buffer.from(res.data, "binary").toString("base64"),
      name: emoji.name
    });
  }
  return res.send(emojis);
});

// make the server listen to requests
app.listen(PORT, () => {
  console.log(`Server running at: http://localhost:${PORT}/`);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60519305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档