如何在ios应用程序中合并两个半图像?
我做了一个相机应用程序,我点击一个图像,把它切成两半,然后我点击另一个图像,并从中切下另一半。
然后这两个图像合并我已经成功完成了这项任务,但问题是合并不顺利。
两半之间有明显的分离……我想知道如何平滑它?
//------merging the two images------ - (UIImage*)mergeImage:(UIImage*)first withImage:(UIImage*)second { // get size of the first image CGImageRef firstImageRef = first.CGImage; CGFloat firstWidth = CGImageGetWidth(firstImageRef); CGFloat firstHeight = CGImageGetHeight(firstImageRef); // get size of the second image CGImageRef secondImageRef = second.CGImage; CGFloat secondWidth = CGImageGetWidth(secondImageRef); CGFloat secondHeight = CGImageGetHeight(secondImageRef); // build merged size CGSize mergedSize = CGSizeMake((firstWidth+secondWidth), MAX(firstHeight, secondHeight)); // capture image context ref UIGraphicsBeginImageContext(mergedSize); //Draw images onto the context [first drawInRect:CGRectMake(0, 0, firstWidth, firstHeight)]; //[second drawInRect:CGRectMake(firstWidth, 0, secondWidth, secondHeight)]; [second drawInRect:CGRectMake(firstWidth, 0, secondWidth, secondHeight) blendMode:kCGBlendModeNormal alpha:1.0]; // assign context to new UIImage UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); // end context UIGraphicsEndImageContext(); return newImage; }
谢谢
(我接受downvote作为健康的批评,但请gv rsn,使我可以改善)
如果我没有错,那么你想这个。
UIImageView *imgView1, *imgView2, *imgView3; imgView1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image1"]]; imgView2 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image2"]]; imgView3 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image3"]]; imgView1.frame = CGRectMake(0, 0, 50, 50); imgView2.frame = CGRectMake(50, 50, 100, 100); imgView3.frame = CGRectMake(100, 100, 200, 200); [referenceView addSubview:imgView1]; [referenceView addSubview:imgView2]; [referenceView addSubview:imgView3]; UIGraphicsBeginImageContext(referenceView.bounds.size); [referenceView.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); resultView = [[UIImageView alloc] initWithImage:finalImage]; resultView.frame = CGRectMake(0, 0, 320, 480); [self.view addSubview:resultView]; referenceView.hidden = YES;
UIImageView *referenceView = [[UIImageView alloc]init]; referenceView.frame = CGRectMake(0, 0, 1024, 768); referenceView.hidden = NO; [self.view insertSubview:referenceView belowSubview:selfView]; UIImageView *imgView1, *imgView2,*imgView3; imgView1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image1"]]; imgView2 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image2"]]; imgView3 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image3"]]; imgView1.frame = CGRectMake(0, 0, 50, 50); imgView2.frame = CGRectMake(50, 50, 100, 100); imgView3.frame = CGRectMake(100, 100, 200, 200); [referenceView addSubview:imgView1]; [referenceView addSubview:imgView2]; [referenceView addSubview:imgView3]; UIImage *finalImage = nil; UIGraphicsBeginImageContext(referenceView.bounds.size); [referenceView.layer renderInContext:UIGraphicsGetCurrentContext()]; finalImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return finalImage;