Как заменить все цвета, кроме черного, в изображении Node.JS

#node.js #typescript #image #image-processing #silhouette

#node.js #typescript #изображение #обработка изображений #силуэт

Вопрос:

Я пытаюсь создать силуэт изображения. Я уже сделал фон черным, но у меня возникли проблемы с преобразованием всех остальных цветов в серый.

Мой код до сих пор:

 import sharp from "sharp";
import jimp from "jimp";

sharp("input.png")
  .flatten()
  .toFile("output.jpg")
  .then(async (data) => {
    const image = await jimp.read("output.jpg");

    image.scan(0, 0, image.bitmap.width, image.bitmap.height, (x, y, idx) => {
      if (image.bitmap.data[idx] >= 2) {
        image.bitmap.data[idx] = 86;
        image.bitmap.data[idx   1] = 101;
        image.bitmap.data[idx   2] = 115;
        image.bitmap.data[idx   3] = image.bitmap.data[idx   3];
      }
    });

    image.write("output.jpg");
  });

  

Этот код выводит: Результат

Входное изображение было: введите описание изображения здесь

Я просмотрел пакеты, подобные replace-color, но они, похоже, нацелены на замену одного цвета, а не всех, кроме одного. Любая помощь очень ценится

Комментарии:

1. У вас есть какая-либо конкретная ошибка?

2. почему вы используете оба sharp и jimp ?

3. я не могу просмотреть ссылку в вашем сообщении, пожалуйста, вставьте ее непосредственно в вопрос

4. @paroxyzm ошибок нет, я просто не могу понять, как я мог бы достичь своей цели здесь

5. @Klaycon готово. также добавлено исходное изображение

Ответ №1:

Проблема заключалась в том, что я менял формат с png на jpg. Сохранение его в формате png устраняет проблему