2012-02-21 4 views
2

I'am二つUIImageをマージサイズ変更された画像は上手く動作します。それよりも10px以上は問題ありません。はこのようなアプリの何かを回転さ&スケーリング

画像を回転すると画像が大きくなりすぎて、問題はありません。私はコードを残す。私は誰かが助けることを願っています

注:画像サイズの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; 
} 

おかげ

答えて

0

それを掛けこれは私

Merging a previosly rotated by gesture UIImageView with another one. WYS is not WYG

のために働くのソリューションです

メイン画面に写真を撮り、それを写真のサイズに合わせて素早くきれいにします。アプリが通常のデバイスで網膜で実行されている場合は解像度はそれほど良いものではありません。そして、網膜で働くためにコードを準備する必要があります&非網膜

関連する問題