2012-09-17 85 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

相關問題