CGImage von URL mit Maske, wie?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • CGImage von URL mit Maske, wie?

    Hallo

    Super, dass es ein deutsches Forum gibt. Ich bin an einer iPhone-Applikation und stosse auf ein Problem. Ich habe bis jetzt in der Doku und im Internet nicht wirklich etwas nützliches gefunden.

    Bis jetzt habe ich folgendes erstellt:

    id path = @"http://www.swiss-development.ch/wallpapers/iphone3.jpg";
    NSURL *url = [NSURL URLWithString:path];
    NSData *data = [NSData dataWithContentsOfURL:url];
    UIImage *img = [[UIImage alloc] initWithData:data cache:NO];


    Nun möchte ich aber eine Maske mit abgerundeten Ecken erstellen. Ich habe keine Ahnung, wie ich das mit CGImage erstellen soll. Weil UIImage ist ja immutable.

    Wie sieht der DataProvider aus? Und wie verbinde ich die beiden Objekte, so dass es eine Maske wird?

    Ich freue mich auf eine schnellstmögliche Antwort..

    Gruss

    Daniel
  • Hm,

    bin jetzt soweit:


    Quellcode

    1. // Load the image
    2. CGImageRef imageRef = [[UIImage imageNamed:@"test.jpg"] CGImage];
    3. CGImageRef maskRef = [[UIImage imageNamed:@"mask.jpg"] CGImage];
    4. // Retrieve the graphics context
    5. CGContextRef context = UIGraphicsGetCurrentContext();
    6. // Save the context state
    7. CGContextSaveGState(context);
    8. CGImageRef xMaskedImage = CGImageCreateWithMask (imageRef,maskRef);
    9. // Adjust the coordinate system so that the origin
    10. // is in the lower left corner of the view and the
    11. // y axis points up
    12. CGContextTranslateCTM(context, 0, [self bounds].size.height);
    13. CGContextScaleCTM(context, 1.0, -1.0);
    14. // Draw the image
    15. CGContextDrawImage(context, rect, imageRef);
    16. CGContextDrawImage(context, rect, maskRef);
    17. CGContextDrawImage(context, rect, xMaskedImage);
    18. // Restore the context
    19. CGContextRestoreGState(context);
    Alles anzeigen


    Das Bild wird angezeigt, jedoch nur die Maske. Die Maske ist ein schwarzes Rechteck und wurde in Photoshop mit Grayscale erstellt und gespeichert.

    Warum maskiert er das Bild nicht??