2012-08-23 46 views
0

我有一个简单的iPad图像拼贴应用程序的问题。我有一个UIImageView,可以拖放不同的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',你应该可以找到它(或者类似的文章),看看它是如何完成的。

相关问题