Извините, я понятия не имел, как установить тему, которая могла бы выразить, какая помощь мне нужна.
У меня есть массив байтов, значения для каждого пикселя из растрового изображения.Это одномерный массив слева направо.Он берет каждую строку и добавляет ее в конец индекса массива.
Я хотел бы разбить растровое изображение на 225 (= 15 * 15) частей.Каждый кирпич имеет, например, размер 34x34, а длина массива равна 260100 (= 225 * 34 * 34).Итак, как вы видите, сейчас нам понадобится 15 блоков по ширине и по высоте.
Несколько месяцев назад я использовал два цикла, начиная с 0 - 14. Я написал собственный длинный код, чтобы получить все эти блоки 34x34.Однако я не использовал ни одного массива, в котором были бы сохранены все значения.
Теперь у меня есть одномерный массив, потому что маршальное копирование и растровые данные с битлоками были лучшим способом быстрого копирования значений всех пикселей в массив.
Но я стою лицом к лицу с проблемой, как получить 34 элемента, затем на один ряд ниже, а другой, зная, что на 35-м уровне будет еще один кирпичик с собственным начальным значением ..
PS.отредактируйте мой пост, если что-то не так.
Мало кто может сказать «сначала сделайте свой тестовый код».Я попробовал это, но то, что я получил, было просто мусором, и я действительно не знаю, как это сделать.
Этот метод использовался, чтобы обрезать изображение в меньшие изображения, содержащие кирпичи.Но я не хочу хранить маленькие изображения кирпича.Мне нужно хранить значения в массиве байтов.
Под, есть доказательство.
private void OCropImage(int ii, int jj, int p, int p2)
{
////We took letter and save value to binnary, then we search in dictionary by value
this.rect = new Rectangle();
this.newBitmap = new Bitmap(this.bitmap);
for (ii = 0; ii < p; ii++)
{
for (jj = 0; jj < p2; jj++)
{
////New bitmap
this.newBitmap = new Bitmap(this.bitmap);
////Set rectangle working area with letters
this.rect = new Rectangle(jj * this.miniszerokosc, ii * this.miniwysokosc, this.miniszerokosc, this.miniwysokosc);
////Cut single rectangle with letter
this.newBitmap = this.newBitmap.Clone(this.rect, this.newBitmap.PixelFormat);
////Add frame to rectangle to delet bad noise
this.OAddFrameToCropImage(this.newBitmap, this.rect.Width, this.rect.Height);
this.frm1.SetIm3 = (System.Drawing.Image)this.newBitmap;
////Create image with letter which constains less background
this.newBitmap = this.newBitmap.Clone(this.GetAreaLetter(this.newBitmap), this.newBitmap.PixelFormat);
////Count pixels in bitmap
this.workingArea = this.GetBinnary(this.newBitmap);
var keysWithMatchingValues = this.alphabetLetters.Where(x => x.Value == this.workingArea).Select(x => x.Key);
foreach (var key in keysWithMatchingValues)
{
this.chesswords += key.ToString();
}
}
this.chesswords += Environment.NewLine;
var ordered = this.alphabetLetters.OrderBy(x => x.Value);
}
}
PS2.извините за мой английский, пожалуйста, исправьте его, если это необходимо.