2012-02-21 20 views
2

我'做一個應用程序是這樣的:你加載一個照片,你把圖像了它,像氣球等。合併兩個UIImage的是旋轉和縮放

當我嘗試合併的這一個只有調整大小的圖像才能正常工作。就像它應該是10px一樣,但沒問題。

當你旋轉圖像[UIImageView]時,它出現了問題,它顯得大得多,它的圖像,我嘗試分配的東西,什麼都沒有。我離開代碼。我希望有人能幫忙。

注:圖像大小其內部的UIImageView,然後由主圖像的比例乘以它

- (UIImage *)mergeImage:(UIImageView *)mainImage withImageView:(UIImageView *)imageView { 

    UIImage *temp = imageView.image; 
    UIImage *tempMain = mainImage.image; 

    CGFloat mainScale = [self imageViewScaleFactor:mainImage]; 
    CGFloat tempScale = 1/mainScale; 
    NSLog(@"%f", tempScale); 

    //Rotate UIIMAGE 
    UIGraphicsBeginImageContext(temp.size); 
    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    CGAffineTransform transform = CGAffineTransformIdentity; 
    transform = CGAffineTransformTranslate(transform, temp.size.width/2, temp.size.height/2);  
    CGFloat angle = atan2(imageView.transform.b, imageView.transform.a);  
    transform = CGAffineTransformRotate(transform, angle); 
    transform = CGAffineTransformScale(transform, 1.0, -1.0); 
    CGContextConcatCTM(ctx, transform); 
    // Draw the image into the context 
    CGContextDrawImage(ctx, CGRectMake(-temp.size.width/2, -temp.size.height/2, temp.size.width, temp.size.height), temp.CGImage); 
    // Get an image from the context 
    temp = [UIImage imageWithCGImage: CGBitmapContextCreateImage(ctx)]; 


    NSLog(@"%f %f %f", mainScale, mainImage.frame.size.width, mainImage.frame.size.height); 

    UIGraphicsBeginImageContextWithOptions(tempMain.size, NO, 1.0f); 

    //Get imageView size & position 
    NSLog(@"%f %f %f %f", imageView.frame.origin.x, imageView.frame.origin.y, imageView.frame.size.width, imageView.frame.size.height); 

    CGFloat offsetX = 0; 
    CGFloat offsetY = -44; 

    if (tempMain.size.height > tempMain.size.width) { 
     offsetX = ((tempMain.size.width * mainScale) - 320)/2; 
    }else{ 
     offsetY = ((tempMain.size.height * mainScale) - 416)/2; 
     offsetY -= 44; 
    } 

    CGFloat imageViewX = (imageView.frame.origin.x + offsetX) * tempScale; 
    CGFloat imageViewY = (imageView.frame.origin.y + offsetY) * tempScale; 
    CGFloat imageViewW = imageView.frame.size.width * tempScale; 
    CGFloat imageViewH = imageView.frame.size.height * tempScale; 


    CGRect tempRect = CGRectMake(imageViewX, imageViewY, imageViewW, imageViewH); 


    [tempMain drawAtPoint:CGPointZero]; 
    [temp drawInRect:tempRect]; 

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

    return newImage; 
} 

感謝

回答