В этом разделе мы возьмем уже изученные приемы кодирования и знания о изображениях, пикселях и RGB числах для того, чтобы соединить их воедино. Итак, примеры в этом разделе будут касаться работы над каждым пикселем отдельно. А затем, в следующем разделе мы будем обрабатывать тысячи пикселей одновременно. Итак, для начала, я хочу взглянуть на это изображение под названием x.png. Оно очень маленькое, сейчас я покажу его. Это изображение разрешением 10*10 пикселей, вот оно, отмечено на странице. Это черное изображение с белым крестом на нем. И, как я уже говорил, оно очень маленькое. Но, мы увидим его в большем размере чуть позже. Итак, PNG это формат изображения, "переносимая сетевая графика". Точно как JPEG - это тоже формат, который, возможно, наиболее вам знаком. Итак, они оба - форматы изображения. Итак в этом примере я хочу показать вам код, который загрузит изображение x.png и отобразит его. Это будет первый, очень простой пример кода, который работает с изображениями. Итак, код вы можете увидеть здесь, а я расскажу, что означает каждая строка. Итак, первая строка image = new SimpleImage(x.png) Правая часть строки загружает изображение x.png в память. А, о том, что такое память, мы поговорим позже. Достаточно сказать, что изображение поступает в компьютер и он может с ним работать. Как только я написал знак равенства, изображение превращается в переменную, которая называется "image", точно такую же как и другие переменные, которые мы видели раньше. Вторая строка image.setZoom(20) означает функцию приближения картинки. И в данном случае изображение увеличится в 20 раз. Мы используем это для того, чтобы рассмотреть маленькое изображение и приблизить его. И, в конце, print(image) выполняет ту функцию, которую мы уже видели. А именно отображает картинку с правой стороны, как текст и числа, которые мы уже видели раньше. Попробуйте. Если нажать кнопку "Run", то мы увидим изображение x.png. И мы можем посчитать, один, два, три, четыре... Мы можем посчитать, что это изображение с разрешением 10 на 10 пикселей. И оно отображается здесь, увеличенное в 20 раз. Вообще-то, я могу изменить число здесь. И, если я поменяю его на 10, а затем опять нажму "Run", то оно станет увеличенным только в 10 раз. А если я напишу 40, и нажму "Run", то оно станет гораздо больше. Итак, я верну значение 20. Сейчас будет первый небольшой пример кода, но это только начало и дальше мы научимся загружать и работать с изображениями. Итак, чтобы было немного интереснее, я расширю код, чтобы работать с каждый пикселем в отдельности. Я добавляю пару строк в середину программы здесь, и пишу pixel=image.getPixel(0,0). Что это дает? Программа обращается к изображению и ссылается на конкретный пиксель с координатами x, y, которым мы дали значение 0,0. Это верхний левый пиксель, т.е. программа обращается к верхнему левому пикселю и затем переходит к следующей строке pixel.setRed(255). Эта строка означает функцию setRed, которая берет число в скобках и, в независимости от того, что это за число, она приравнивает значение красного цвета в данном пикселе к этому числу. Итак, давайте посмотрим. В коде мы видим, что программа будет обращаться к верхнему левому пикселю, который был черным. А как мы помним, каждый пиксель имеет определенные значения красного, зеленого и синего цветов. И программа меняет значение красного цвета в пикселе и меняет его на 255, просто заменяет то значение, которое там было раньше. Когда мы посмотрим, мы увидим, что пиксель стал красного цвета. Итак, для того чтобы изменить значение красного цвета мы использует функцию setRed. По аналогии мы меняем значение зеленого цвета функцией setGreen и синего цвета - функцией setBlue. Получается три функции: setRed, setGreen and setBlue. Используя эти функции мы можем изменить значения красного, зеленого и синего цветов. Еще надо упомянуть, что есть отдельная страничка, которая называется Image Functions Reference, где расписаны все три функции в таблице, которую вы, возможно, захотите использовать, когда будете выполнять упражнения. Но в лекциях я буду рассказывать о тех функциях, которые буду использовать. Для того, чтобы лучше понять, как работают эти функции, потренируйтесь на упражнениях. Используйте их, чтобы изменить или сделать что-либо. Итак, это самый простой пример кода для разминки. А здесь в таблице я написал парочку примеров потруднее, например, установить значения зеленого, желтого и т.д. Давайте пробежимся по ним. Для каждого из них справа есть кнопка "show", которую вы можете нажать и посмотреть решение программы. Позже вы можете вернуться к этой странице и попробовать самостоятельно сделать то, что я буду сейчас делать или придумать другие примеры. Давайте попробуем сделать первый пример. Для начала я нажму "run", чтобы посмотреть, как отобразиться код. Итак, сейчас программа берет пиксель (0,0) и делает его красным. Мы это уже видели. В первом примере нужно сделать пиксель (0,0) зеленым. Условие дано словами, его нужно преобразовать в код, т.е. записать, используя цифры и символы. Итак, какова последовательность действий? Вы должны как бы перевести задание с человеческого языка на компьютерный. В упражнении необходимо сделать пиксель зеленым. Итак, я собираюсь вместо функции setRed написать функцию setGreen. Давайте попробуем. И вот, что у нас получилось! У нас появился зеленый пиксель. В следующем упражнении необходимо сделать пиксель (0,0) желтым. Для того, чтобы это сделать, нужно для красного и зеленого цветов поставить значения 255. Как мы знаем, желтый состоит из красного и зеленого. Мы меняем красный и зеленый. Я просто скопирую эту строку, вставлю ее здесь и изменю это на красный. У меня есть ссылка на пиксель (0,0) и я могу делать с ним сразу несколько функций. В первой функции setRed я задаю значение красного цвета. А во второй setGreen во второй строке - зеленого. Программа выполнит код подряд строку за строкой. Давайте попробуем. Получился желтый!