Tengo un objeto 2208 x 3000 TransformedBitmap con el formato {Indexed8} que estoy haciendo. CoppyPixels() activado. Estoy usandoProblemas 'Stride' de un objeto TransformedBitmap
(int)((formattedBitmap.PixelWidth * formattedBitmap.Format.BitsPerPixel + 7)/8)
(suponiendo 'formattedBitmap' es el nombre de la imagen de la que estoy tratando de copiar el píxeles) para el valor de 'paso' en mi llamada a un método y una matriz de bytes que es 2208 de largo. Tengo algo así como que funciona en otro lugar del código (donde el formato de la imagen es {Gray8}. Sin embargo, cuando trato de hacer lo mismo en la imagen mencionada, continuamente obtengo un "Argumento fuera de rango" excepción que dice "El valor del parámetro no puede ser menor que '6624000'. \ r \ nNombre del parámetro: buffer."
Mis preguntas sobre esto son: ¿por qué el mismo código parece funcionar en un solo lugar y no el otro? ¿Qué en el mundo, en términos simples, realmente ES el 'zancada'? ¿Y cómo puedo obtener el efecto deseado (de copiar los bits) sin obtener este error? ¿Qué estoy haciendo mal?
Cualquier ayuda a esto sería muy apreciado. Muchas gracias!
Ah, y MSDN tiene un artículo bastante decente sobre lo que es un 'zancada'. Ciertamente no son términos "sencillos" y realmente me parece un poco convulso, pero es una buena referencia, sin embargo (solo uno que podría necesitar leer varias veces para comprender realmente si es nuevo en el procesamiento de imágenes en C# (¡como yo!)) LINK: http://msdn.microsoft.com/en-us/library/aa473780(VS.85).aspx – JToland
Como una persona que tiende a echar un vistazo al código (todos tenemos prisa ¿Verdad?) Vi su cálculo de zancada (el equivocado) y pasé media hora tratando de hacerlo funcionar antes de darme cuenta de que tenía la fórmula correcta más abajo. Sería bueno tener la fórmula correcta en la parte superior :) – Peter