Я пытаюсь объединить два изображения в финальное изображение, но, к сожалению, не могу найти способ сделать это. Как я могу объединить две фотографии, как показано ниже?
Смешайте два изображения вместе
comment
Это руководство может помочь raywenderlich.com/ 69855/
- person Prashant Tukadiya   schedule 08.04.2016
comment
Как насчет использования фотошопа?
- person Khanh Nguyen   schedule 08.04.2016
Ответы (4)
Еще проще: вы можете использовать CISwipeTransition
и установите inputTime
на 0,5,
Саймон
person
Simon Gladman
schedule
08.04.2016
Что мне делать с CISwipeTransition? у вас есть пример?
- person Sagar Vaholiya; 09.04.2016
Переход смахиванием принимает два изображения —
inputImage
и inputTargetImage
. Он в первую очередь предназначен для перехода между изображениями в приложениях, таких как слайд-шоу, но, установив для inputTime
значение 0,5, он дает разделенный экран для двух изображений. Боюсь, я не говорю на ObjC, но у меня есть демонстрационное приложение Swift для изучения переходов CI: github .com/FlexMonkey/CoreImageTransitionExplorer
- person Simon Gladman; 09.04.2016
Вот так. Но мне нужно только настроить градиент смешивания между изображениями, мне не нужен переход. после этого я должен нарисовать эти два изображения в одно изображение.
- person Sagar Vaholiya; 11.04.2016
Если вы хотите использовать базовую графику, вы можете создать маску градиента, нарисовать первое изображение, применить градиент в качестве обтравочной маски, а затем нарисовать второе изображение. Таким образом, первое изображение не обрезается, а второе обрезается по градиенту:
- (UIImage *)imageCombiningImage:(UIImage *)image1 withImage:(UIImage *)image2 {
CGRect rect = CGRectMake(0, 0, image1.size.width, image1.size.height);
UIGraphicsBeginImageContextWithOptions(image1.size, TRUE, image1.scale);
// create gradient
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGFloat locations[] = { 0.45, 0.55 }; // gradient goes from 45% to 55% the way across the image
CGFloat components[] = {
1.0, 1.0, 1.0, 1.0, // Start color ... white
0.0, 0.0, 0.0, 0.0 // End color ... clear
};
CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, components, locations, 2);
// create mask from that gradient
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextDrawLinearGradient(context, gradient, CGPointMake(0, 0), CGPointMake(image1.size.width, 0), kCGGradientDrawsAfterEndLocation);
CGImageRef gradientImageRef = CGBitmapContextCreateImage(context);
// draw the first image
[image1 drawInRect:rect];
// clip subsequent drawing to the gradient mask we just created
CGContextClipToMask(context, rect, gradientImageRef);
// draw the second image
[image2 drawInRect:rect];
// extract the image
UIImage *combinedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// clean up
CGColorSpaceRelease(colorSpace);
CGGradientRelease(gradient);
CGImageRelease(gradientImageRef);
return combinedImage;
}
Это приводит к:
person
Rob
schedule
09.04.2016
_View1.frame = CGRectMake(0, 0, Width/2, Width);
_View2.frame = CGRectMake(0, 0, Width/2, Width);
CAGradientLayer *gradientMask = [CAGradientLayer layer];
gradientMask.frame = self.View2.bounds;
gradientMask.colors = @[(id)[UIColor whiteColor].CGColor,
(id)[UIColor clearColor].CGColor];
gradientMask.startPoint = CGPointMake(0.5, 0.5); // start at left middle
gradientMask.endPoint = CGPointMake(0, 0.5); // end at right middle
self.View2.layer.mask = gradientMask;
person
Sagar Vaholiya
schedule
08.04.2016
person
schedule
Спасибо за помощь @Richard G
- person Sagar Vaholiya; 08.04.2016
Это, очевидно, не визуализирует переход градиента между двумя изображениями, а скорее является жестким переходом.
- person Rob; 10.04.2016