استفاده از Imgproxy در برنامه NodeJS


برای استفاده از Imgproxy در برنامه‌های NodeJS، نیاز به نصب ماژول و یا کتابخانه خاصی نیست! در ابتدا، بایستی متغیرهای محیطی زیر را به فایل env. یا بخش متغیرهای محیطی برنامه خود اضافه کنید؛ به عنوان مثال:

کپی
ENDPOINT_URL=https://laravel-app.liara.run
IMGPROXY_URL=https://imgproxy-app.liara.run

اکنون می‌توانید تنظیمات مربوط به Imgproxy را در برنامه خود وارد کنید:

کپی
const ENDPOINT_URL = process.env.ENDPOINT_URL;
const IMGPROXY_URL = process.env.IMGPROXY_URL;

const img_proxy_conf = {
    "signature": "_",
    "options": "resize:fill:300:400:0",
    "gravity": "gravity:sm"
};

const imgproxy_conf = `${IMGPROXY_URL}/${img_proxy_conf.signature}/${img_proxy_conf.options}/${img_proxy_conf.gravity}/plain/`;

دقت داشته باشید که مقادیر درون img_proxy_conf برای مثال آورده شده‌اند و شما می‌توانید مقادیر آن را متناسب با نیازهای خود تغییر دهید. در نهایت، می‌توانید با استفاده از قطعه کد زیر، از Imgproxy در برنامه خود استفاده کنید:

کپی
app.get('/images', (req, res) => {
    fs.readdir('./public/uploads', (err, files) => {
        if (err) {
            console.error('Error reading directory:', err);
            res.status(500).send('Internal Server Error');
            return;
        }

        const imageFiles = files.filter(file => {
            const extname = path.extname(file);
            return ['.jpg', '.jpeg', '.png', '.gif'].includes(extname.toLowerCase());
        });

        const processedImages = imageFiles.map(image => {
            const temp = `${ENDPOINT_URL}/public/uploads/${image}`;
            return `${imgproxy_conf}${temp}`;
        });

        processedImages.forEach(image => {
            console.log(image);
        });

        res.render('images', { images: processedImages });
    });
});

سورس کامل قطعه کد فوق در اینجا موجود است که می‌توانید از آن استفاده کنید.