iPhone: ¿cómo crear un mapa de bits vacío en la memoria?

Necesito crear un mapa de bits vacío (en la memoria) con valores conocidos de ancho y alto. Usaré el contexto de este mapa de bits para dibujar y luego mostrar la imagen en MKOverlayVew. ¿Alguien conoce la forma más fácil de hacer esto?

preguntado el 16 de mayo de 11 a las 17:05

¿Vacío como transparente? ¿O "vacío" como relleno con algún color de fondo (negro, blanco, etc.)? -

1 Respuestas

El siguiente código debería funcionar. Originalmente de: CGBitmapContextCreate en el iPhone / iPad

      int width = 500;
      int height = 500;

      CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
      unsigned char *rawData = malloc(height * width * 4);
      memset(rawData, 0, height * width * 4);

      NSUInteger bytesPerPixel = 4;
      NSUInteger bytesPerRow = bytesPerPixel * width;
      NSUInteger bitsPerComponent = 8;
      CGContextRef context = CGBitmapContextCreate(rawData, width, height, bitsPerComponent, bytesPerRow, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
      // Do your thing and then release
      CGColorSpaceRelease(colorSpace);
      free(rawData);
      CGContextRelease(context);

No estoy seguro de si hay alguna diferencia con el código publicado en esa pregunta, pero el OP menciona problemas de memoria y nunca tuve ninguno con este código que estoy publicando.

contestado el 23 de mayo de 17 a las 15:05

¡Gracias! Este código realmente funciona. Y funcionando bien. Como resultado, obtuve un rendimiento cada vez mayor para mi aplicación aproximadamente 100 veces. - martianex

Una vez que haya llamado a CGBitmapContextCreate, ¿puede modificar el píxel escribiendo la memoria inte rawData? - webshaker

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.