|
|
const fs = require('fs'); |
|
|
const path = require('path'); |
|
|
const fetch = require('node-fetch'); |
|
|
const { Image, loadImage } = require('canvas'); |
|
|
|
|
|
|
|
|
async function loadImg(source) { |
|
|
try { |
|
|
|
|
|
const isUrl = /^https?:\/\//.test(source); |
|
|
|
|
|
if (isUrl) { |
|
|
|
|
|
const response = await fetch(source); |
|
|
if (!response.ok) { |
|
|
throw new Error(`Gagal memuat gambar dari URL: ${response.statusText}`); |
|
|
} |
|
|
const buffer = await response.buffer(); |
|
|
const img = new Image(); |
|
|
img.src = buffer; |
|
|
return img; |
|
|
} else { |
|
|
|
|
|
const filePath = path.resolve(source); |
|
|
if (!fs.existsSync(filePath)) { |
|
|
throw new Error(`File tidak ditemukan di jalur: ${filePath}`); |
|
|
} |
|
|
const buffer = await fs.promises.readFile(filePath); |
|
|
const img = new Image(); |
|
|
img.src = buffer; |
|
|
return img; |
|
|
} |
|
|
} catch (error) { |
|
|
console.error(`Error loading image (${source}):`, error.message); |
|
|
throw error; |
|
|
} |
|
|
} |
|
|
|
|
|
module.exports = loadImg |