Ваша задача разработать реализации интерфейсов ImageConverter
и ConvolutionProvider
и
создать их в методах impl.image.ImageConverterFactory.getInstance
и impl.image.ConvolutionProviderFactory.getInstance
соответственно.
ImageConverter
должен уметь превращать Color[][]
в int[][]
и обратно, где int
будет хранить в себе данные о цвете в таком виде:
- 0-7 биты хранят информацию о голубом цвете (
blue
), - 8-15 биты хранят информацию о зеленом цвете (
green
), - 16-23 биты хранят информацию о красном цвете (
red
), - 24-31 биты хранят информацию о прозрачности (
alpha
).
ConvolutionProvider
должен уметь применять операцию свертки
к данной картинке, используя ядро (гарантируется, что размерности ядра > 0).
- Применять операцию свертки следует к каждому цвету отдельно.
- Размер изображения меняться не должен.
- Если при применении свертки, элемент ядра выходит за пределы картинки, следует считать, что
red, green, blue = 0
. alpha
всегда оставлять равной255
.- После каждого умножения значения цвета на элемент ядра следует производить округление к
0
.
В пакете impl.image
представлен класс ImageUtil
его методы writeOutputImage
, readOriginImage
можно использовать, чтобы
записывать картинки в папку resources/image/output
и читать картинки из папки resources/image/origin
.
С их помощью можно смотреть, как операция свертки влияет на изображения.
- Все картинки должны быть в формате
png
. - При указании имени картинки, формат также должен указываться (например
pic1.png
).