Frage

Ich habe das Gefühl, dies keine leichte Aufgabe ist, aber ich brauche eine UIImageView mit einer anderen UIImage Ansicht darüber liegenden zu kombinieren oder zu glätten. Zum Beispiel: Ich habe zwei UIImageViews. Eine von ihnen hat einen UIImage einer Grasfläche (1200 x 1200 Pixel). Die anderes ist ein UIImage eines Basketballs (128 x 128 Pixel), und es wird über dem Bild des grasigen Feldes derart positioniert, dass der Basketball auf dem Rasenfeld zu sein scheint. Ich möchte in der Lage, die überlagerte UIImageViews als eine einzige Bilddatei zu meinem Fotoalbum zu retten, was bedeutet, dass ich irgendwie die zwei Bilder zu kombinieren. Wie würde dies erreicht werden? (ANMERKUNG:. Einen Screenshot (320 x 480 Pixel) nicht eine akzeptable Lösung sein, wie ich will die Größe von 1200 x 1600 Pixel erhalten

FRAGE:
Wie kann ich mehrere UIImageViews in ein und speichern Sie das resultierende Bild glätten, während die Größe / Auflösung zu erhalten.

War es hilfreich?

Lösung

Dies geschieht jede Ansicht und macht eine UIImage aus ihm heraus. Jede Ansicht und es ist Subviews wird „abgeflacht“ in ein UIImage, die Sie auf die Festplatte anzuzeigen oder zu speichern.

  - (UIImage*)imageFromView{

    UIImage *image;

    UIGraphicsBeginImageContext(self.view.bounds.size);
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
    image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return image;

}

Andere Tipps

Warum Sie nicht einfach original UIImages in einen Hintergrundpuffer auf dem jeweils anderen ziehen und dann ein kombiniertes Bild in eine Datei schreiben? Unten ist ein Beispiel, wie Sie zwei Bilder, die auf den gleichen Puffer ziehen:

CGImageRef bgimage = [bguiimage CGImage];
width = CGImageGetWidth(bgimage);
height = CGImageGetHeight(bgimage);

// Create a temporary texture data buffer
GLUbyte* data = (GLubyte *) malloc(width * height * 4);
assert(data);

// Draw image to buffer
CGContextRef ctx = CGBitmapContextCreate(data, width, height, 8, width * 4, CGImageGetColorSpace(image), kCGImageAlphaPremultipliedLast);
assert(ctx);

// Flip image upside-down because OpenGL coordinates differ
CGContextTranslateCTM(ctx, 0, height);
CGContextScaleCTM(ctx, 1.0, -1.0);

CGContextDrawImage(ctx, CGRectMake(0, 0, (CGFloat)width, (CGFloat)height), bgimage);

CGImageRef ballimage = [balluiimage CGImage];
bwidth = CGImageGetWidth(ballimage);
bheight = CGImageGetHeight(ballimage);

float x = (width - bwidth) / 2.0;
float y = (height - bheight) / 2.0;
CGContextDrawImage(ctx, CGRectMake(x, y, (CGFloat)bwidth, (CGFloat)bheight), ballimage);

CGContextRelease(ctx);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top