2014-11-15 1 views
-1

내 앱에서 세 개의 이미지 뷰가 단일 uiimage로 병합되어야한다는 3 가지 이미지 뷰가 있습니다. 갤러리/카메라에서 이미지를 가져 오는 첫 번째 이미지보기 프레임 이미지에 대한 두 번째 이미지 뷰 오버레이 이미지에 대한 세 번째 이미지 뷰 (첫 번째 이미지 뷰에 위치 함) 공유하는 동안 공유 중에이 이미지를 단일 이미지로 병합해야합니다. 그것은 단지 두 번째 이미지를 보여주고 세번째 중 하나가 사전 여기 에 문제 .Thanks을 알고 있다면 내 질문에 대답 viewing.please되지 않은 첫 번째 이미지를 병합되는 것은 내 공유 코드 좀 도와주세요iOS에서 하나의 uiimage로 3 개의 다른 이미지 뷰를 병합하는 방법

[self.OverLayImgView setAlpha:0.6]; UIImage *FirstImage = ImgView.image; 
UIImage *ScndImage=self.FramesAppliedImg.image; 
UIImage *ThirdImg=self.OverLayImgView.image; 
CGSize firstImagSize=[FirstImage size]; 
UIGraphicsBeginImageContext(firstImagSize); 
[FirstImage drawInRect:CGRectMake(20,20,315,315)]; 
[ScndImage drawInRect:CGRectMake(0,0,355,355)]; 
[ThirdImg drawInRect:CGRectMake(20, 20, 315,315)]; 
UIImage *newImage=UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
+2

주석에 코드를 넣지 마십시오. 질문을 코드로 업데이트하십시오. – rmaddy

+0

누군가가 문제를 알고 있다면 제안 해주세요 – Suneha

답변

0

을이 시도해보십시오.

일부보기 클래스는 다음 대신 UIView를 사용합니다.

- (UIImage *)stitchedImageWithSize:(CGSize)size 
        borderOffset:(CGFloat)borderOffset 
        borderColor:(UIColor *)borderColor 
{ 

    UIImageView *v = [[UIImageView alloc] initWithFrame:CGRectMake(0.f, 0.f, size.width, size.height)]; 
    v.backgroundColor = self.backgroundColor; 
    v.image = self.image; 
    v.contentMode = self.contentMode; 

for (NSUInteger i = 0; i < self.subviews.count; i++) { 
    id obj = self.self.subviews[i]; 

    if ([obj isKindOfClass:[V_freeStitchingCell class]]) { 
     V_freeStitchingCell *cell = obj; 

     CGRect rect = cell.rect_first; 

     //make rect with center 
     rect.origin.x = cell.center.x - (rect.size.width/2.f); 
     rect.origin.y = cell.center.y - (rect.size.height/2.f); 

     //make rect with scale 
     rect.size.width = rect.size.width * size.width/self.frame.size.width; 
     rect.size.height = rect.size.height * size.height/self.frame.size.height; 
     rect.origin.x = rect.origin.x * size.width/self.frame.size.width; 
     rect.origin.y = rect.origin.y * size.height/self.frame.size.height; 

     if (cell.pImg_value) { 
      UIView *sv = [[UIView alloc] initWithFrame:rect]; 
      sv.backgroundColor = borderColor; 

      CGSize tmpsize = cell.frame.size; 
      UIImage *img = [UIImage imageWithImage:cell.pImg_value inRect:CGRectZero size:&tmpsize errMsg:nil]; 
      UIImageView *vimg = [[UIImageView alloc] initWithFrame:CGRectMake(borderOffset, borderOffset, rect.size.width - (borderOffset * 2), rect.size.height - (borderOffset * 2))]; 
      vimg.image = img; 
      [sv addSubview:vimg]; 

      [v addSubview:sv]; 
      sv.transform = cell.transform; 
     } 
    } 
} 

    UIGraphicsBeginImageContext(size); 
    CGContextRef contxt = UIGraphicsGetCurrentContext(); 
    [v.layer renderInContext:contxt]; 
    UIImage *des = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return des; 
    } 
+0

하위보기에 이미지를 추가하는 경우 예외가 발생했습니다. 예외가 발생했습니다. – Suneha

관련 문제