如何在 sails.js 或服务器端 JavaScript 中将图像转换为 Base64 编码的数据 URL?

问题描述 投票:0回答:6

我正在

sails.js
制作一个小应用程序,我需要将图像存储在数据库中。为此,我需要将图像转换为 Base64 编码的数据 URL,以便可以将其作为字符串保存在我的帆模型中。但是,我不知道如何将其转换为这种形式。所有较旧的问题都询问有关将图像转换为 Base64 编码的数据 URL 的问题,他们回答了有关在客户端执行此操作的问题。但是,我想在服务器端执行此操作,同时我将通过发布请求获取图像。我怎样才能实现这个目标?

javascript node.js sails.js
6个回答
149
投票

据我了解,您想要将文件转换为 Base64 编码的字符串。无论文件是否是图像,都没关系。

var fs = require('fs');

// function to encode file data to base64 encoded string
function base64_encode(file) {
    // read binary data
    var bitmap = fs.readFileSync(file);
    // convert binary data to base64 encoded string
    return new Buffer(bitmap).toString('base64');
}

用途:

var base64str = base64_encode('kitten.jpg');

来源


114
投票

可以通过readFileSync来实现,传入图像路径作为第一个参数,编码选项作为第二个参数。如下图:

var fs = require('fs');

var imageAsBase64 = fs.readFileSync('./your-image.png', 'base64');

根据 node 文档:

fs.readFileSync(路径[,选项])

fs.readFile() 的同步版本。返回 路径的内容。

如果指定了编码选项,则此函数返回一个 细绳。否则它返回一个缓冲区。


1
投票

//可以使用image-to-base64

const imageToBase64 = require('image-to-base64');

imageToBase64("URL") // insert image url here. 
    .then( (response) => {
          console.log(response);  // the response will be the string base64.
      }
    )
    .catch(
        (error) => {
            console.log(error);
        }
    )

0
投票

使用
Buffer.from

的另一种解决方案
  1. ES6
    版本
import fs from 'node:fs';

const convertImageToBase64URL = (filename, imageType = 'png') => {
  try {
    const buffer = fs.readFileSync(filename);
    const base64String = Buffer.from(buffer).toString('base64');
    // console.log(`base64String`, base64String.slice(0, 100));
    return `data:image/${imageType};base64,${base64String}`;
  } catch (error) {
    throw new Error(`file ${filename} no exist ❌`)
  }
}

export {
  convertImageToBase64URL,
};

// test cases
const ok = convertImageToBase64URL("./public/test.png");
const err = convertImageToBase64URL();

  1. TypeScript
    版本
import fs from 'node:fs';

type Filename = string;
type ImageType = 'png' | 'jpg' | 'jpeg' | 'gif' | 'webp';
type Base64String = `data:image/${ImageType};base64,${string}`;

const convertImageToBase64URL = (filename: Filename, imageType: ImageType = 'png'): Base64String => {
  try {
    const buffer = fs.readFileSync(filename);
    const base64String = Buffer.from(buffer).toString('base64');
    // console.log(`base64String`, base64String.slice(0, 100));
    return `data:image/${imageType};base64,${base64String}`;
  } catch (error) {
    throw new Error(`file ${filename} no exist ❌`)
  }
}

export {
  convertImageToBase64URL,
};

// test cases
const ok = convertImageToBase64URL("./public/test.png");
const err = convertImageToBase64URL();
/* 

Expected 1-2 arguments, but got 0.ts(2554)
An argument for 'filename' was not provided.
const convertImageToBase64URL: (filename: Filename, imageType?: ImageType) => Base64String

*/



-3
投票
//instala via npm
npm install --save image-to-uri

//declara no codigo
const imageToUri = require('image-to-uri');

//implementa 
let imagem = imageToUri("caminho da sua imagem");

-14
投票

这是另一种简单的方法,在列出图像时使用它

@{
    if (item.ImageData != null)
    {
        string imageBase64 = Convert.ToBase64String(item.ImageData);
        string imageSrc = string.Format("data:image/gif;base64,{0}", imageBase64);
        <img src="@imageSrc" width="100" height="100" />
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.