2012-09-17 52 views
2

我要开门见山,我的问题是,我有一个正在3个按钮和一个UIImage view.Now一个UIView控制器,如何添加两个uiimageview并将其保存到iPhone照片库在iPhone应用程序开发?

  1. 当我按下第一个按钮,我正在从图像iphone默认照片库和放置在uiimageview。

  2. 当我按下第二个按钮时,它将拍摄照片库中的另一张图像并放置在之前的图像上。

  3. 现在,当我按第三个按钮时,这两个图像将添加并使其成为一个图像并保存在相册中。

我已经完成了步骤1和步骤2,但我该如何做第3步?

编辑

假设没有胡子男人在一个图片(图像1),但我加入另一个胡须图像(图像2)使图像在那里他将像胡须男(图像3)。我想将图片3保存在相册中。

在此先感谢您的帮助..

+0

你是什么意思添加图像?将它们添加到串联中? –

+0

@Challenger添加或合并,无论在画面you.suppose一个人没有胡子,但我加入另一大胡子形象,使图像在那里他将像胡须男。我希望明白这一点。 – Emon

+0

更多建议????????? – Emon

回答

1

自己也有同样的问题,以前我解决这样

尝试这一类代码....

.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) 
+0

灿烂的答案,但我有问题。什么将是规模的方法? – Emon

+0

它是关于图像resizeing @emon – Spynet

+0

@Emon实际上是用于缩放图像的其他类别方法.... – Spynet

1

按钮TouchUpInSide事件 写THID代码

创建第一图像

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

先保存图像

UIImageWriteToSavedPhotosAlbum(myImage, self, nil, nil); 

创建第二图像

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

保存第二图像

UIImageWriteToSavedPhotosAlbum(myImage, self, nil, nil); 
+0

请按照编码风格和格式。 – Sandy

+0

感谢您的答案,但我需要合并两个图像,然后保存它。假设在一个图像(图像1)没有胡子的人,但我加入另一个胡须图像(图像2)使图像在那里他将像胡须男(图像3)。我想将图片3保存在相册中。我希望明白这一点。 – Emon

相关问题