Пиксельная мозаика из картинки

198
04 ноября 2017, 11:54

Всем привет! Помогите разобраться с реализацией в C# Необходимо сделать следующее: 1. Загрузить картинку (любого размера) 2. Изменить глубину цвета картинки в диапазоне с 8 до 32 бит (возможно выбирать 8, 16, 32) 3. Сделать из полученного изображения мозаику.

Из-за отсутствия опыта, не могу понять что делать? В каком направлении копать. Спасибо!

Answer 1

Вот простое и понятное решение (исправил под общее решение):

    private const int H_CELL = 24;
    private const int W_CELL = 24;
    private Image ConvertImage(Image source) {
        Image result = (Image)source.Clone();
        Bitmap bitmap = new Bitmap(source);
        using (Graphics g = Graphics.FromImage(result)) {
            for (int y = 0; y < bitmap.Height; y += H_CELL) {
                for (int x = 0; x < bitmap.Height; x += W_CELL) {
                    Brush brush = new SolidBrush(bitmap.GetPixel(x, y));
                    g.FillRectangle(brush, x, y, W_CELL, H_CELL);
                }
            }
        }
        return result;
    }

Пример использования:

    picTo.Image = ConvertImage(picTo.Image);

Здесь происходит следующее - разбиваем исходное изображение на зоны размером в H_CELL/W_CELL, далее, пробегаемся по пересечениям ячеек этих зон, и извлекаем цвет, после чего, заполняем этим цветом всю зону.

Так же, прикреплю ссылку на проект, чтобы могли посмотреть "поближе".

Архив с проектом

READ ALSO
XML-сериализация по особым правилам

XML-сериализация по особым правилам

Имеется электронный документооборотОбмен данными выполняется с помощью XML следующей структуры:

232
Ошибка при декодировании BitmapImage

Ошибка при декодировании BitmapImage

Кодирую BitmapImage (в формате gif) в массив байт, далее передаю этот массив байт по сети, массивы байтов при отправке и пришествию совпадают, далее...

415
Залочить форму на время работы события

Залочить форму на время работы события

Есть на форме кнопка сохранитьКогда я её нажимаю, есть необходимость залочить форму, и запустить например колесо прокрутки с текстом на подобии...

231
Как добавить индекс при Entity Model First?

Как добавить индекс при Entity Model First?

Как добавить индекс по 2м столбцам в Модель таблицы базы данных при Entity подходе Model-first ?

263