Pregunta

Básicamente quiero crear automáticamente una imagen en mosaico a partir de un montón de imágenes de origen y guarde eso para el álbum de fotos del usuario. No estoy teniendo ningún éxito dibujo de un montón de pequeñas UIImage de en una gran UIImage. ¿Cuál es la mejor manera de lograr esto? Actualmente estoy usando UIGraphicsBeginImageContext () y [UIImage drawAtPoint], etc. Todo lo que siempre terminan con un cuadrado negro es de 512x512. ¿Cómo debería estar haciendo esto? Busco a CGLayer de, etc. Parece que hay un montón de opciones pero ninguno que funcione con especial facilidad.

Deja que realmente poner mi código en:

CGSize size = CGSizeMake(512, 512);
UIGraphicsBeginImageContext(size);
UIGraphicsPushContext(UIGraphicsGetCurrentContext());
for (int i = 0; i < 4; i++)
{
    for (int j = 0; j < 4; j++)
    {
        UIImage *image = [self getImageAt:i:j];
        [image drawAtPoint:CGPointMake(i*128,j*128)];
    }
}
UIGraphicsPopContext();
UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(result, nil, nil, nil);

Debo señalar que en realidad lo anterior es no lo que sucede en mi código exactamente. Lo que realmente sucede es que llamo a cada línea antes y que incluye a UIGraphicsPushContext, a continuación, en un temporizador de animación poco a poco incrementar el dibujo y dibujo con el contexto. Luego, después de todo se hace que llamo de todo, desde UIGraphicsPopContext adelante.

¿Fue útil?

Solución 2

Para hacer exactamente lo que quería hacer ...

Haga su GLView tan grande como la cosa total que desea. También asegúrese de que la ventana gráfica y glOrtho tienen el tamaño adecuado. A continuación, sólo dibuja lo que quieras donde quieras, y toma una sola pantalla OpenGL. Entonces usted no tiene que preocuparse acerca de la combinación de una sola UIImage a través de múltiples renderizado OpenGL pasa, que es sin duda lo que estaba causando mi problema.

Otros consejos

Oh, a continuación, puedes guardar la vista en pantalla después de que se ha prestado en la pantalla:

 UIGraphicsBeginImageContext(myBigView.bounds.size);
    [view drawRect:myBigView.bounds];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

estás almacenando de nuevo a una imagen?

UIImage *myBigImage = UIGraphicsGetImageFromCurrentImageContext();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top