NodeJS:如何将图像大小与 base64 图像一起使用?
NodeJS: How to use image-size with base64 image?
我找到了节点模块 image-size 并想用它来获取 base64 编码图像的尺寸。本教程给出了以下获取尺寸的示例:
var sizeOf = require('image-size');
var dimensions = sizeOf('images/funny-cats.png');
console.log(dimensions.width, dimensions.height);
有人在第二个答案的评论中写了 here 它也适用于 base64 图像。所以我尝试了以下方法:
var img = Buffer.from(base64, 'base64');
var dimensions = sizeOf(img);
console.log(dimensions.width, dimensions.height);
但是我得到一个 TypeError: unsupported file type: undefined (file: undefined)
如何将图像大小包的 sizeOf-Method 与变量中的 base64 字符串一起使用?
试试这个
var img = Buffer.from(base64.substr(23), 'base64');
var dimensions = sizeOf(img);
console.log(dimensions.width, dimensions.height);
substr(23)
截断 data:image/jpeg;base64,
,这是根据 base64 数据正确创建 Buffer
所必需的。
这是另一个使用 puppeteer
的解决方案,值得考虑
const puppeteer = require('puppeteer')
// image data
const data = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBwgHBg...'
const browser = await puppeteer.launch()
const page = await browser.newPage();
const dimensions = await page.evaluate(data => new Promise(resolve => {
// client-like
const img = new Image()
img.onload = () => resolve({ width: img.width, height: img.height })
img.src = data
}), data)
console.log(dimensions.width, dimensions.height)
browser.close()
如果代码在 wsl 上下文中是 运行,则使用此代码:
const browser = await puppeteer.launch({
args: ['--no-sandbox', '--disable-setuid-sandbox']
})
我找到了节点模块 image-size 并想用它来获取 base64 编码图像的尺寸。本教程给出了以下获取尺寸的示例:
var sizeOf = require('image-size');
var dimensions = sizeOf('images/funny-cats.png');
console.log(dimensions.width, dimensions.height);
有人在第二个答案的评论中写了 here 它也适用于 base64 图像。所以我尝试了以下方法:
var img = Buffer.from(base64, 'base64');
var dimensions = sizeOf(img);
console.log(dimensions.width, dimensions.height);
但是我得到一个 TypeError: unsupported file type: undefined (file: undefined)
如何将图像大小包的 sizeOf-Method 与变量中的 base64 字符串一起使用?
试试这个
var img = Buffer.from(base64.substr(23), 'base64');
var dimensions = sizeOf(img);
console.log(dimensions.width, dimensions.height);
substr(23)
截断 data:image/jpeg;base64,
,这是根据 base64 数据正确创建 Buffer
所必需的。
这是另一个使用 puppeteer
的解决方案,值得考虑
const puppeteer = require('puppeteer')
// image data
const data = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBwgHBg...'
const browser = await puppeteer.launch()
const page = await browser.newPage();
const dimensions = await page.evaluate(data => new Promise(resolve => {
// client-like
const img = new Image()
img.onload = () => resolve({ width: img.width, height: img.height })
img.src = data
}), data)
console.log(dimensions.width, dimensions.height)
browser.close()
如果代码在 wsl 上下文中是 运行,则使用此代码:
const browser = await puppeteer.launch({
args: ['--no-sandbox', '--disable-setuid-sandbox']
})