2012-08-23 5 views
0

간단한 iPad 이미지 콜라주 앱에 문제가 있습니다. 나는 다른 UIImageViews를 drag'n'drop 할 수있는 UIImageView를 가지고있다. 드래그 한 뷰를 회전하고 늘일 수 있습니다. 사용자가 이미지 편집을 마쳤 으면 모든 이미지를 최종 이미지에 병합합니다. 내 솔루션 맥락에서 UIGraphics를 사용하는 모든 서브 뷰를 통해 큰 이미지, 다음 루프를 그리고 그들을 그릴 수 있었다 :이미지를 병합하고 원본 변형을 유지하는 방법

- (UIImage*)mergeImages 
{ 
    CGSize imageSize = imageView.frame.size; 
    UIGraphicsBeginImageContext(imageSize); 

    [imageView.image drawInRect:CGRectMake(0, 0, imageSize.width, imageSize.height)]; 

    [[imageView subviews] enumerateObjectsUsingBlock:^(id object, NSUInteger index, BOOL *stop) { 

     UIImage *imageOriginal = ((UIImageView*)object).image; 
     CGRect rect = ((UIImageView*)object).frame; 

     UIImage *imageToAdd = [self scaleImage:imageOriginal :rect.size]; 

     // Find the w/h ratioes 
     float widthRatio = rect.size.width/imageOriginal.size.width; 
     float heightRatio = rect.size.height/imageOriginal.size.height; 

     // Calculate point to draw at 
     CGPoint pointToDrawAt; 
     if (widthRatio > heightRatio) 
      pointToDrawAt = CGPointMake(rect.origin.x + (rect.size.width/2) - (imageToAdd.size.width/2), rect.origin.y); 
     else 
      pointToDrawAt = CGPointMake(rect.origin.x, rect.origin.y + (rect.size.width/2) - (imageToAdd.size.height/2)); 

     [imageToAdd drawAtPoint:pointToDrawAt]; 

    }]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext();  

    // Save image in photogalery 
    UIImageWriteToSavedPhotosAlbum(newImage, nil, nil, nil); 

    return newImage; 
} 

은 위의 이미지가 회전되지 않는 긴로 벌금을 작동합니다. 그래서 내 질문은 :

내가 회전 각도를 찾을 수있는 방법은 하위 뷰에서 또는 UIView 하위 클래스 및 속성을 만들 필요가 있습니까? 아니면 이미지를 병합하고 각도 및 필터와 같은 드로잉 특정 속성을 얻을 수있는 또 다른 방법이 있습니까?

내가 더 많은 코드 또는 아무것도 코멘트를 도울 수 있다면. 그리고 미리 감사드립니다 :)

답변

0

UIImages에는 쿼리 할 수있는 "imageOrientation"이라는 속성이 있습니다. 이 사실을 알게되면 CGAffineTransform을 컨텍스트에 적용하여 이미지를 렌더링 된대로 렌더링 할 수 있습니다. 최근에이 게시물을 게시 한 지 며칠 만에 'CGAffineTransform'을 검색하면 해당 게시물 (또는 유사한 게시물)을 찾고 해당 게시물을 볼 수 있어야합니다.

관련 문제