Как получить изображение с качеством в процентах в узле js public / uploads / image - PullRequest
0 голосов
/ 14 июня 2019

Мне нужно сохранить только одно исходное изображение в моей папке, но получить тиски различного качества.

Например, это изображение имеет качество 5%: https://rukminim1.flixcart.com/image/880/1056/jrp8r680/sari/m/k/g/free-1468-kashvi-sarees-original-imafdfszdcpvcwrp.jpeg?q=5

enter image description here

100% качество изображения: https://rukminim1.flixcart.com/image/880/1056/jrp8r680/sari/m/k/g/free-1468-kashvi-sarees-original-imafdfszdcpvcwrp.jpeg?q=100

enter image description here

1 Ответ

1 голос
/ 14 июня 2019

Если вы хотите конвертировать уровни качества, я бы посоветовал попробовать Jimp . Это позволяет нам легко конвертировать качество изображения в формате JPEG.

const express = require('express');
const app = express();
const port = 3000;
const Jimp = require('jimp');

function getImage(imageFile, qualityPercent) {
    return Jimp.read(imageFile)
    .then(image => {
        // Convert to new quality level %
        return image.quality(qualityPercent).getBufferAsync(Jimp.MIME_JPEG);
    });
}

app.get('/images/:imageFileName', async (req, res) => {
    let imageFileName = req.params.imageFileName;

    // Get the quality requested in percent, e.g. /images/original_image.jpeg?quality=15
    let qualityPercent = Number(req.query.quality) || 100;
    let imageBuffer = await getImage(imageFileName, qualityPercent);
    res.writeHead(200, {
        'Content-Type': 'image/jpg',
        'Content-Length': imageBuffer.length
    });

    console.log(`Serving ${imageFileName} at ${qualityPercent}% quality...`);
    res.end(imageBuffer);
});

app.listen(port);

Запустите этот сервер, и вы можете запросить изображение с помощью URL (например):

http://localhost:3000/images/original_image.jpeg?quality=25
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...