Domanda

Io fondamentalmente voglio creare automaticamente un'immagine piastrelle da un gruppo di immagini sorgente, e quindi salvare quella di album di foto dell'utente. Io non sto avendo alcun successo disegnando un gruppo di piccoli UIImage di in un unico grande UIImage. Qual è il modo migliore per ottenere questo risultato? Attualmente sto usando UIGraphicsBeginImageContext () e [UIImage drawAtPoint], ecc Tutto quello che finisce con un quadrato nero 512x512. Come dovrei fare questo? Sto cercando di CGLayer di, ecc sembra che ci siano un sacco di opzioni, ma nessuno che funzionano particolarmente facile.

Mi permetta effettivamente messo il mio codice in:

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

Vorrei sottolineare che in realtà quanto sopra è non quello che succede nel mio codice esattamente. Ciò che realmente accade è che io chiamo ogni linea prima e anche verso UIGraphicsPushContext, poi in un timer animazione che ho lentamente aumentare il disegno e disegno al contesto. Poi dopo è tutto fatto io chiamo tutto da UIGraphicsPopContext in poi.

È stato utile?

Soluzione 2

Per fare esattamente quello che volevo fare ...

Fai la tua GLview grande come la cosa totale che si desidera. Assicurarsi inoltre glOrtho e la vostra finestra hanno la giusta dimensione. Poi basta disegnare quello che vuoi dove vuoi, e prendere un singolo OpenGL screenshot. Quindi non c'è bisogno di preoccuparsi di che unisce ad un unico UIImage su più rendering OpenGL passa, che è senza dubbio quello che stava causando il mio problema.

Altri suggerimenti

Oh, allora si può solo salvare la visualizzazione sullo schermo dopo che è stato reso sullo schermo:

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

stai memorizzazione di nuovo a un'immagine?

UIImage *myBigImage = UIGraphicsGetImageFromCurrentImageContext();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top