Question

Je veux essentiellement de créer automatiquement une image en mosaïque à partir d'un groupe d'images source, puis enregistrez que pour l'album photo de l'utilisateur. Je ne suis pas avoir de succès dessiner un tas de petits UIImage de dans un grand UIImage. Quelle est la meilleure façon d'y parvenir? Actuellement, je suis en utilisant UIGraphicsBeginImageContext () et [UIImage drawAtPoint], etc. Tout ce que je finis toujours avec est un 512x512 carré noir. Comment dois-je faire cela? Je cherche à CGLayer de, etc. semble qu'il ya beaucoup d'options, mais aucun qui fonctionne particulièrement facilement.

Permettez-moi en fait mon code:

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);

Je dois souligner que fait ce qui précède est pas ce qui se passe dans mon code exactement. Qu'est-ce qui se passe réellement est que j'appelle chaque ligne avant et y compris à UIGraphicsPushContext, puis dans une minuterie d'animation j'incrémenter lentement le dessin et dessiner le contexte. Puis, après tout cela se fait que j'appelle tout de UIGraphicsPopContext en avant.

Était-ce utile?

La solution 2

Pour ce faire exactement ce que je voulais faire ...

Faites votre GLView aussi grand que la chose totale que vous voulez. Assurez-vous également glOrtho et votre fenêtre ont la bonne taille. Ensuite, il suffit de dessiner ce que vous voulez où vous voulez, et de prendre une seule capture d'écran OpenGL. Ensuite, vous n'avez pas à vous soucier de la combinaison à un seul UIImage sur plusieurs rendu OpenGL passe, ce qui est sans doute ce qui était à l'origine de mon problème.

Autres conseils

Oh, alors vous pouvez simplement enregistrer la vue à l'écran après qu'il a été rendu à l'écran:

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

stockez-vous revenir à une image?

UIImage *myBigImage = UIGraphicsGetImageFromCurrentImageContext();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top