Как добавить два uiimageview и сохранить их в фотогалерее iphone при разработке приложений для iphone?

Я иду прямо к делу, моя проблема в том, что у меня есть контроллер uiview, который принимает 3 кнопки и представление uiimage. Теперь,

  1. Когда я нажимаю первую кнопку, я беру изображение из фотогалереи iphone по умолчанию и помещаю в uiimageview.

  2. Когда я нажимаю вторую кнопку, она берет другое изображение из фотогалереи и помещает на предыдущее изображение.

  3. Теперь, когда я нажму третью кнопку, эти два изображения добавят и сделают одно изображение и сохранят в фотоальбоме.

я сделал шаг 1 и шаг 2, но как я могу сделать шаг 3??

РЕДАКТИРОВАТЬ

предположим, что на фотографии изображен мужчина без бороды (изображение 1), но я добавляю еще одно изображение бороды (изображение 2), чтобы создать изображение, на котором он будет выглядеть как мужчина с бородой (изображение 3). Я хочу сохранить изображение 3 в фотоальбоме.

Заранее благодарю за любую помощь..

2 ответа

Решение

Сам также с той же проблемой ранее я решил таким образом

попробуйте этот код категории....

.h файл:

#import <UIKit/UIKit.h>

@interface UIImage (MyImage)


+ (UIImage*)imageFromView:(UIView*)view;
+ (UIImage*)imageFromView:(UIView*)view scaledToSize:(CGSize)newSize;
+ (UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize;
+ (void)beginImageContextWithSize:(CGSize)size;
+ (UIImage *)croppedImage:(UIImage *)myImage :(CGRect)bounds;

//masking the image ....

+ (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage;

@end

.m файл:

#import "UIImage+MyImage.h"

@implementation UIImage (MyImage)

+ (void)beginImageContextWithSize:(CGSize)size
{
    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
        if ([[UIScreen mainScreen] scale] == 2.0) {
            UIGraphicsBeginImageContextWithOptions(size, YES, 2.0);
        } else {
            UIGraphicsBeginImageContext(size);
        }
    } else {
        UIGraphicsBeginImageContext(size);
    }
}

+ (void)endImageContext
{
    UIGraphicsEndImageContext();
}

+ (UIImage*)imageFromView:(UIView*)view
{
    [self beginImageContextWithSize:[view bounds].size];
    BOOL hidden = [view isHidden];
    [view setHidden:NO];
    [[view layer] renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    [self endImageContext];
    [view setHidden:hidden];
    return image;
}

+ (UIImage*)imageFromView:(UIView*)view scaledToSize:(CGSize)newSize
{
    UIImage *image = [self imageFromView:view];
    if ([view bounds].size.width != newSize.width ||
        [view bounds].size.height != newSize.height) {
        image = [self imageWithImage:image scaledToSize:newSize];
    }
    return image;
}

+ (UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize
{
    [self beginImageContextWithSize:newSize];
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    [self endImageContext];
    return newImage;
}


+ (UIImage *)croppedImage:(UIImage *)myImage :(CGRect)bounds {
    CGImageRef imageRef = CGImageCreateWithImageInRect(myImage.CGImage, bounds);
    UIImage *croppedImage = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);
    CGSize asd =  croppedImage.size;
    return croppedImage;
}




+ (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {

    CGImageRef maskRef = maskImage.CGImage; 

    CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
                                        CGImageGetHeight(maskRef),
                                        CGImageGetBitsPerComponent(maskRef),
                                        CGImageGetBitsPerPixel(maskRef),
                                        CGImageGetBytesPerRow(maskRef),
                                        CGImageGetDataProvider(maskRef), NULL, false);

    CGImageRef masked = CGImageCreateWithMask([image CGImage], mask);

    CGImageRelease(mask);
    CGImageRelease(maskRef);
    return [UIImage imageWithCGImage:masked];

}



@end

мой дизайн будет представлением (названным CombinedView), которое содержит два изображения, один из которых является просто исходным изображением [т.е. человек без бороды] в верхней части этого изображения, у меня есть изображение бороды...

тогда я делаю образ таким образом....

UIImage *myMaskedImage=[UIImage imageFromView:combinedView ];

для сохранения этого в альбоме используйте это...

 UIImageWriteToSavedPhotosAlbum(myMaskedImage, self, nil, nil);

попробуй эту идею....

Новое обновление: эту структуру нужно поддерживать, а также theViewцвет фона как чистый цвет

              +theView ---
                 |
                 ->imageview1(person)
                 |
                 ->imageView2(beard alone)

В кнопке TouchUpInSide Событие Написать код thid

Создать первое изображение

UIImage *myImage = [UIImage imageNamed:@"image1.png"];

сохранить первое изображение

UIImageWriteToSavedPhotosAlbum(myImage, self, nil, nil);

Создать второе изображение

myImage = [UIImage imageNamed:@"image2.png"];

Сохранить второе изображение

UIImageWriteToSavedPhotosAlbum(myImage, self, nil, nil);
Другие вопросы по тегам