Intereting Posts

Объединить два UIIмага, которые вращаются и масштабируются

Я делаю приложение примерно так: вы загружаете фотографию, и вы помещаете изображения поверх нее, например, воздушные шары и т. Д.

Когда я пытаюсь объединить один из этих изображений с только изменением размера, он отлично работает. Как 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; } 

благодаря

Это решение, которое работает для меня

Слияние ранее повернутого жестом UIImageView с другим. WYS не WYG

Я просто беру фотографию на главный экран, а затем обрезаю ее до размера фотографии, ее быстрее и чистой. и разрешение это нормально, если приложения работают в сетчатке в обычном устройстве, не слишком хорошо. И вам нужно подготовить этот код для работы в сетчатке и не сетчатке