如何在iphone应用程序开发中添加两个uiimageview并将其保存到iphone照片库?
我直截了当地说,我的问题是,我有一个uiview控制器,它带有3个按钮和一个uiimage视图。现在,
-
当我按下第一个按钮时,我从iphone默认照片库中获取图像并放置在uiimageview上。
-
当我按下第二个按钮时,它将从照片库中拍摄另一张图像并放在上一张图像上。
-
现在当我按第三个按钮时,这两个图像将添加并制作一个图像并保存在相册中。
我已经完成了第1步和第2步,但我怎么能做第3步?
编辑
假设一个男人在照片中没有胡子(图片1),但我正在添加另一个胡须图像(图像2)来制作一个他看起来像胡子男人的图像(图像3)。 我想在相册中保存图像3。
在此先感谢任何帮助..
我自己也有同样的问题,我以前这样解决了
试试这个类别代码….
.h文件:
#import @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)
在Button TouchUpInSide事件中写入thid代码
创建第一张图片
UIImage *myImage = [UIImage imageNamed:@"image1.png"];
保存第一张图片
UIImageWriteToSavedPhotosAlbum(myImage, self, nil, nil);
创建第二个图像
myImage = [UIImage imageNamed:@"image2.png"];
保存第二张图片
UIImageWriteToSavedPhotosAlbum(myImage, self, nil, nil);