nuxt3获取远程图片base64编码功能

作者:admin 发布时间:2026-01-09 12:19:52 浏览:1356次

想要实现nuxt3获取远程图片base64编码功能有两种方法


1. 基础通用方案:axios + 原生 Buffer(零额外依赖)


这是最轻量化的方案,Nuxt3 内置了 $fetch(基于 ofetch),无需额外安装 HTTP 库即可实现,核心是通过请求获取图片二进制数据,再转换为 Base64。

使用示例(Nuxt3 组件 / 插件中):

<script setup lang="ts">
// 定义转换函数
const convertImageToBase64 = async (imageUrl: string) => {
  try {
    // 1. 请求远程图片,获取二进制数据
    const response = await $fetch(imageUrl, {
      method: 'GET',
      responseType: 'arrayBuffer' // 关键:指定响应类型为二进制数组
    });

    // 2. 将 ArrayBuffer 转为 Buffer(Node.js 环境)/ Uint8Array(浏览器)
    const buffer = Buffer.from(response);
    
    // 3. 转换为 Base64(自动处理图片格式)
    const base64 = buffer.toString('base64');
    
    // 4. 拼接完整的 Base64 URL(前端可直接用于 img 标签)
    const mimeType = getImageMimeType(imageUrl); // 辅助函数:获取图片 MIME 类型
    return `data:${mimeType};base64,${base64}`;
  } catch (error) {
    console.error('图片转换 Base64 失败:', error);
    return null;
  }
};

// 辅助函数:根据图片后缀判断 MIME 类型
const getImageMimeType = (url: string) => {
  const ext = url.split('.').pop()?.toLowerCase();
  const mimeMap: Record<string, string> = {
    jpg: 'image/jpeg',
    jpeg: 'image/jpeg',
    png: 'image/png',
    gif: 'image/gif',
    webp: 'image/webp'
  };
  return mimeMap[ext] || 'image/png';
};

// 调用示例
const remoteImageUrl = 'https://www.zhe94.com/your-image.png';
const base64Result = await convertImageToBase64(remoteImageUrl);
</script>

<template>
  <img :src="base64Result" alt="Base64 图片" v-if="base64Result" />
</template>



2. 专用工具库:image-to-base64(简洁易用)

这是一个轻量的专门用于图片转 Base64 的库,支持远程 URL 和本地路径,适配 Node.js 环境(Nuxt3 服务端)。
安装:

npm install image-to-base64 --save
# 或
yarn add image-to-base64
Nuxt3 中使用:
<script setup lang="ts">
import imageToBase64 from 'image-to-base64';

const convertRemoteImage = async () => {
  try {
    const base64 = await imageToBase64('https://www.zhe94.com/your-image.jpg');
    // 拼接完整的 Base64 URL
    const base64Url = `data:image/jpeg;base64,${base64}`;
    console.log('转换结果:', base64Url);
    return base64Url;
  } catch (error) {
    console.error('转换失败:', error);
  }
};
</script>



如需转载请保留本文出处: https://zhe94.com/985.html

上一篇:懂懂日记:一点委屈
 mysql实现主从复制代码

mysql实现主从复制代码

mysql实现主从复制相关代码记录
宝塔面板登录ssl关闭不了怎么办?

宝塔面板登录ssl关闭不了怎么办?

云服务器安装宝塔面板时,不小心开启了SSL,应该如何关闭?
Chat2DB的WEB端在安装部署在服务器上

Chat2DB的WEB端在安装部署在服务器上

Chat2DB 是一款有开源免费的多数据库客户端工具,支持windows、mac本地安装,也支持服务器端部署,web网页访问。和传统的数据库客户端软件Navicat、DBeaver 相比Chat2DB集成了AIGC的能力,能够将自然语言转换为SQL,也可以将SQL转换为自然语言,可以给出研发人员SQL的优化建议,极大的提升人员的效率,是AI时代数据库研发人员的利器,未来即使不懂SQL的运营业务也可以使用快速查询业务数据、生成报表能力
TinyVue - 华为云 OpenTiny 出品的企业级前端 UI 组件库,免费开源,同时支持 Vue2 / Vue3,自带 TinyPro 中后台管理系统

TinyVue - 华为云 OpenTiny 出品的企业级前端 UI 组件库,免费开源,同时支持 Vue2 / Vue3,自带 TinyPro 中后台管理系统

TinyVue 是一个基于 Vue 的 UI 组件库,交互细腻,设计优雅,有很多独有的组件,比如云服务中经常遇到的 IP 地址输入框组件,体验非常好。整体和 Element / Ant Design 这些知名的前端组件库相比也毫不逊色。
HTML css 实现各种优惠背景效果

HTML css 实现各种优惠背景效果

用CSS做优惠券背景,优惠券的本质其实是一个短期刺激消费的工具,它与积分刚好构成了日常营销的基本工具。消费者使用优惠券的目的不言而喻,当然是为了省钱。而同时,也为商家做了无形的广告。
python 中文分词工具LAC和jieba

python 中文分词工具LAC和jieba

python 中文分词工具有很多,今天主要分享两款很不错的分词工具,jieba和百度的lac