Обработка изображения с JavaScript?

Следующие четыре шага могут помочь вам: метод использует Java 8 Stream API

  • проверить список собак, если он пуст или пуст, то вывести сообщение об ошибке
  • список собак сортировки
  • отфильтровать список собак, чтобы найти целевую собаку
  • распечатать информацию о собаке

Предположим, что структура собаки выглядит следующим образом:

class Dog {
    private String name;
    private Double tailLength;
    private String owner;
}

Код в Java 8 следующим образом:

public static void listDogs(List<Dog> dogs, int tailLengh) {
    if (null == dogs || dogs.size() < 1) {
        System.out.println("no register dogs");
    } else dogs.stream()
            .sorted((o1, o2) -> o1.getTailLength().compareTo(o2.getTailLength()) == 0 ? o1.getName().compareTo(o2.getName()) : o1.getTailLength().compareTo(o2.getTailLength()))
            .filter(dog -> dog.getTailLength() >= tailLengh)
            .forEach(dog -> System.out.println(dog));
}

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

6
задан Logan Serman 14 December 2008 в 03:44
поделиться

2 ответа

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

// Create the canvas element
var canvas = document.createElement("canvas");
canvas.width = image.width;
canvas.height = image.height;

// Draw the image onto the canvas
var ctx = canvas.getContext("2d");
ctx.drawImage(image, 0, 0);

// Get the pixel data
var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);

// Loop through imageData.data - an array with 4 values per pixel: red, green, blue, and alpha
for (int x = 0; x < imageData.width; x++) {
    for (int y = 0; y < imageData.height; y++) {
        var index = 4 * (y * imageData.width + x);
        var r = imageData.data[index];
        var g = imageData.data[index + 1];
        var b = imageData.data[index + 2];
        var a = imageData.data[index + 3];

        // Do whatever you need to do with the rgba values
    }
}
8
ответ дан 10 December 2019 в 02:55
поделиться

Убрать часть

var r = imageData.data[index];
var g = imageData.data[index + 1];
var b = imageData.data[index + 2];
var a = imageData.data[index + 3];

, Javascript не передается по ссылке.

1
ответ дан 10 December 2019 в 02:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: