Frage

Ich mag im Grunde automatisch ein gefliestes Bild aus einer Reihe von Quellbildern erstellen, und dann, dass in das Fotoalbum speichert des Benutzers. Ich habe keinen Erfolg eine Reihe von kleinen UIImage ist in eine große UIImage zeichnen. Was ist der beste Weg, dies zu erreichen? Derzeit verwende ich UIGraphicsBeginImageContext () und [UIImage drawAtPoint] usw. Alles, was ich jemals am Ende mit einem 512x512 schwarzen Quadrat ist. Wie soll ich tun dies sein? Ich bin zu CGLayer sucht usw. scheint es eine Menge Möglichkeiten, aber keine, die besonders leicht zu arbeiten.

Lassen Sie mich eigentlich mein Code setzen 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);

Ich sollte beachten, dass tatsächlich die oben ist nicht , was genau in meinem Code geschieht. Was wirklich passiert ist, dass ich jede Zeile vor und einschließlich UIGraphicsPushContext, dann in einer Animation Timer nenne ich die Zeichnung langsam erhöhen und auf den Kontext zu ziehen. Dann, nachdem er alles getan, was ich alles von UIGraphicsPopContext rufe weiter.

War es hilfreich?

Lösung 2

tun genau das, was ich ...

tun wollte

Machen Sie Ihre GLView so groß wie die Gesamt, was Sie wollen. Stellen Sie außerdem sicher, dass glOrtho und Ihre Ansichtsfenster die richtige Größe haben. Dann einfach ziehen, was Sie wollen, wo immer Sie wollen, und nehmen einen einzigen OpenGL-Screenshot. Dann brauchen Sie sich nicht um die Kombination zu einem einzigen UIImage über mehr OpenGL-Rendering sorgen gibt, die keinen Zweifel daran, was mein Problem verursacht.

Andere Tipps

Oh, dann können Sie nur die Bildschirmansicht speichern, nachdem es auf dem Bildschirm wiedergegeben wurde:

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

Sie sind es wieder zu einem Bild zu speichern?

UIImage *myBigImage = UIGraphicsGetImageFromCurrentImageContext();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top