Реагируйте: Как прочитать PNG в клиенте / браузере и разобрать его в PNGJS

Я использую React JS для разработки своего приложения.

Я знаю, как импортировать изображение в структуру папок клиента / браузера

В моем случае:

import maze_text from '../../mazes/images/maze_text.png';

Я хотел бы прочитать этот файл PNG, чтобы я мог передать его PNGJS

например

var PNG = require('pngjs').PNG

Я хотел бы передать его в pngjs, чтобы PNGJS мог анализировать весь png-файл и проверять каждый пиксель изображения на его цвет и т. Д.

Я пытался:

var FileReader = new window.FileReader()
var imageData = FileReader.readAsArrayBuffer(maze_text)

Но я получаю следующую ошибку:

Mazes.js:51 Uncaught TypeError: Failed to execute 'readAsArrayBuffer' on 'FileReader': parameter 1 is not of type 'Blob'.

По сути, я пытаюсь добиться перевода приведенного ниже кода Ruby в эквивалент Javascript с использованием pngjs, поскольку в Javascript нет ChunkyPNG:

def self.from_png(file)
  image = ChunkyPNG::Image.from_file(file)
  mask = Mask.new(image.height, image.width)

  mask.rows.times do |row|
    mask.columns.times do |col|
      if image[col, row] == ChunkyPNG::Color::BLACK
        mask[row, col] = false
      else
        mask[row, col] = true
      end
    end
  end

  mask
end

0 ответов

//assuming you have a Input with "fileInput" id
var file = document.getElementById('fileInput').files[0];
var filereader = new FileReader();
filereader.onloadend = function(event) {
    new png.PNG({filterType: 4}).parse(event.target.result, function(error, image){
        if(error){return;}
        //image is the PNG image
    });
};
filereader.readAsArrayBuffer(file);
Другие вопросы по тегам