¿Por qué me sale una excepción de falta de memoria?C# Image.Clone Excepción de memoria
Así que este muere en C# en el primer tiempo a través de:
splitBitmaps.Add (neededImage.Clone (rectDimensions, neededImage.PixelFormat));
Dónde splitBitmaps es una lista < memoria de imagen > pero esto funciona en VB durante al menos 4 iteraciones:
arlSplitBitmaps.Add (Image.Clone (rectDimensions, Image.PixelFormat))
Dónde arlSplitBitmaps es una lista de matriz simple. (Y sí, yo he intentado ArrayList en C#)
Ésta es la fullsection:
for (Int32 splitIndex = 0; splitIndex <= numberOfResultingImages - 1; splitIndex++)
{
Rectangle rectDimensions;
if (splitIndex < numberOfResultingImages - 1)
{
rectDimensions = new Rectangle(splitImageWidth * splitIndex, 0,
splitImageWidth, splitImageHeight);
}
else
{
rectDimensions = new Rectangle(splitImageWidth * splitIndex, 0,
sourceImageWidth - (splitImageWidth * splitIndex), splitImageHeight);
}
splitBitmaps.Add(neededImage.Clone(rectDimensions, neededImage.PixelFormat));
}
neededImage es un mapa de bits por cierto.
No puedo encontrar ninguna respuesta útil en el intarweb, especialmente no por qué funciona bien en VB.
Actualización:
realidad me encontré con una razón (más o menos) para este trabajo, pero se olvidó de publicarlo. Tiene que ver con la conversión de la imagen a un mapa de bits en lugar de solo intentar clonar la imagen sin procesar si mal no recuerdo.
Duda es memoria, explota por primera vez. –
Sí, mapa de bits. El objetivo no afecta estas excepciones de OoM, según mi experiencia. –