【问题标题】:How can I merge 2 image in 2 UIImageView into 1 image如何将 2 个 UIImageView 中的 2 个图像合并为 1 个图像
【发布时间】:2012-12-26 10:59:01
【问题描述】:

我想将 2 个 UIImageView 中的 2 个图像合并为 1 个具有“正确”位置、角度、比例比例的图像,正如我在屏幕上看到的那样。

在我的项目中,有 2 个 UIImageView - imageView 是主要的 UIImageView - topImageView 是 UIImageView 的叠加层,可以拖动、旋转、缩放

我可以保存通过绘制 2 张图像合并的图像,但位置、角度、比例比例错误。

这是我的代码:

UIImage *img = topImageView.image;
UIImage *bottomImg = self.imageView.image;
CGSize bounds = self.imageView.image.size;

UIGraphicsBeginImageContext(bounds);
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(ctx, topImageView.image.size.width * 0.5, topImageView.image.size.height * 0.5);
CGFloat angle = atan2(topImageView.transform.b, topImageView.transform.a);
CGContextRotateCTM(ctx, angle);

[topImageView.image drawInRect:CGRectMake(-topImageView.image.size.width * 0.5,
                                          -topImageView.image.size.height * 0.5,
                                          topImageView.image.size.width,
                                          topImageView.image.size.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

UIGraphicsBeginImageContext(bounds);
[bottomImg drawInRect:CGRectMake(0, 0, bounds.width, bounds.height)];
[newImage drawInRect:CGRectMake(topImageView.frame.origin.x,
                                topImageView.frame.origin.y,
                                newImage.size.width,
                                newImage.size.height)];
UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

有什么想法可以帮助我吗?非常感谢!

【问题讨论】:

标签: ios graphics cgaffinetransform


【解决方案1】:

将这两个图像作为子视图添加到 UIView。对图像执行您需要的操作,然后像这样拍摄 UIVIew 的快照:

UIGraphicsBeginImageContext(view.bounds.size);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *MergedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

【讨论】:

    【解决方案2】:

    试试这个

    #pragma mark - Marge two Images 
    
    - (UIImage *) addImageToImage:(UIImage *)img withImage2:(UIImage *)img2{
    
        CGSize size = CGSizeMake(imageView.image.size.width, imageView.image.size.height);
        UIGraphicsBeginImageContext(size);
    
        CGPoint pointImg1 = CGPointMake(0,0);
        [img drawAtPoint:pointImg1]; 
    
        CGPoint pointImg2 = CGPointMake(0,0);
        [img2 drawAtPoint: pointImg2];
    
        UIImage* result = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
    
        return result;
    }
    
    
    [self addImageToImage:imageView.image withImage2:imageView2.image];
    

    【讨论】:

      猜你喜欢
      • 2020-05-29
      • 2012-03-04
      • 2012-08-18
      • 1970-01-01
      • 1970-01-01
      • 2012-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多