Подтвердить что ты не робот

DrawBitmap() и setPixels(): какой шаг?

Может ли кто-нибудь объяснить мне (ASCII действительно приветствуется), что аргумент stride означает в Canvas.drawBitmap() и в Bitmap.setPixels()/getPixels()? Я понимаю, что это способ пропускать элементы в массиве цветов, но как?

4b9b3361

Ответ 1

В большинстве случаев этот шаг совпадает с шириной. Шаг полезен, если вы пытаетесь скопировать/нарисовать субрегион растрового изображения. Например, если у вас есть растровое изображение 100x100, и вы хотите нарисовать правый верхний угол 50x50, вы можете использовать ширину 50 пикселей и шаг 100 пикселей.

Ответ 2

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

Stride может отличаться от ширины изображения.

Большинство изображений выравниваются по 4 байт.

Например, 24-битное (RGB) изображение шириной 50 пикселей. Всего требуемых байтов будет 150 (3 (RGB) * 50). Поскольку изображение будет выровнено по 4 байт, в этом случае требуемый байт станет 152.

Итак, вы увидите шаг 152, ширину 50 и выравнивание изображения в 4 байт.

Ответ 3

Вот хорошее описание от Microsoft о том, какой шаг обычно делается на изображениях. Таким образом, на простом английском языке он определяет, сколько шагов компьютер сканирует данные изображения до тех пор, пока не примет, что он находится на следующей строке.

Я также считаю, что для примера @Romain Guy также потребуется установить x = 50 и height = 50, если я правильно его понимаю.