Ich versuche, zwei Bilder in das endgültige Bild zusammenführen, aber leider kann ich nicht finden, wie dies zu tun ist. Wie kann ich zwei Fotos wie unten gezeigt zusammenführen?Mischen Sie zwei Bilder zusammen
Antwort
UIImage *image1 = [UIImage imageNamed:@"image1.jpg"];
UIImage *image2 = [UIImage imageNamed:@"image2.jpg"];
CGSize newSize = image1.size; //set new size as you want
UIGraphicsBeginImageContext(newSize);
//crop image1
CGImageRef imageRef = CGImageCreateWithImageInRect([image1 CGImage], CGRectMake(0, 0, image1.size.width/2, image1.size.height));
image1 = [UIImage imageWithCGImage:imageRef scale:image1.scale orientation:image1.imageOrientation];
CGImageRelease(imageRef);
//crop image2
imageRef = CGImageCreateWithImageInRect([image2 CGImage], CGRectMake(0, 0, image2.size.width/2, image2.size.height));
image2 = [UIImage imageWithCGImage:imageRef scale:image2.scale orientation:image2.imageOrientation];
CGImageRelease(imageRef);
//combine both images
// Use existing opacity as is
[image1 drawInRect:CGRectMake(0, 0, newSize.width/2, newSize.height)];
// Apply supplied opacity if applicable
[image2 drawInRect:CGRectMake(newSize.width/2, 0, newSize.width/2, newSize.height) blendMode:kCGBlendModeNormal alpha:1];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSString *strPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true) objectAtIndex:0];
strPath = [strPath stringByAppendingPathComponent:@"img.png"];
NSError *error = nil;
[[NSFileManager defaultManager] removeItemAtPath:strPath error:&error];
NSData *imgdata = UIImagePNGRepresentation(newImage);
[imgdata writeToFile:strPath atomically:false];
NSLog(@"Path = %@",strPath); //on this path image will be stored
Danke für die Hilfe @Richard G –
Ihre Begrüßung :) –
Dies macht natürlich nicht den Gradienten Übergang zwischen den beiden Bildern, sondern ist ein harter Übergang. – Rob
_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;
Noch einfacher können Sie ein CISwipeTransition
und setzen inputTime
-,5, verwenden
Simon
Wie kann ich mit CISwipeTransition machen? Hast du ein Beispiel? –
Ein Swipe-Übergang akzeptiert zwei Bilder - 'inputImage' und' inputTargetImage'. Es ist in erster Linie für den Wechsel zwischen Bildern in Apps wie einer Diashow gedacht, aber durch Einstellen der 'inputTime' auf 0,5 wird eine geteilte Bildschirmansicht der beiden Bilder angezeigt. Ich spreche nicht ObjC, ich fürchte, aber ich habe eine Swift-Demo-App zur Erkundung von CI-Übergängen: https://github.com/FlexMonkey/CoreImageTransitionExplorer –
Das stimmt. Aber ich muss nur den Farbverlauf zwischen den Bildern anpassen, ich brauche keinen Übergang. danach muss ich diese zwei Bilder in ein Bild zeichnen. –
Wenn Sie Core Graphics verwenden möchten, können Sie eine Verlaufsmaske erstellen, um das erste Bild zeichnen, die Steigung als Clipping-Maske anwenden und dann das zweite Bild zeichnen. Somit ist das erste Bild unclipped und die zweite auf den Gradienten abgeschnitten wird:
- (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;
}
Das ergibt:
- 1. Ziehen Sie zwei Bilder zusammen, aber
- 2. Mischen von zwei Audiodateien zusammen mit Python
- 3. Bootstrap3:/zwei Bilder reagieren zusammen
- 4. Mischen Sie zwei Bilder und runde Ecke in PHP
- 5. CIFilter: Verschiedene Bilder mischen
- 6. Wie zoomen Sie zwei nebeneinander liegende Bilder zusammen?
- 7. Binden Sie zwei Bilder zusammen, um gezogen zu werden
- 8. Mischen Sie zwei Bitmaps (PNG) mit Code
- 9. Pixel aus zwei Bitmaps mischen
- 10. Mischen Sie zwei Dateien mit ähnlichen Spalteneinträgen
- 11. Mischen Sie zwei Datenrahmen zusammen, die die gleichen Variablennamen und Datentypen haben
- 12. Mischen von zwei Syntaxhervorhebungsskripten
- 13. Passen zwei Bilder zusammen? Mit Emgu CV C#
- 14. Zwei Bilder zusammenfügen
- 15. Zwei ViewPager zusammen steuern
- 16. Anfrage zwei Modelle zusammen
- 17. JQuery Fügen Sie zwei Auswahlen zusammen
- 18. Putting zwei Bytes zusammen
- 19. Putting zwei Arrays zusammen
- 20. Mischen Sie zwei identische DataTables-Ergebnisse in DataRowState.Modified
- 21. Schließen zwei Bögen zusammen
- 22. Zwei Summenabfragen zusammen
- 23. Concat zwei Strings zusammen
- 24. ansprechende Bilder mit Bootstrap - zwei Bilder ausgerichtet
- 25. Mischen Sie zwei Datensätze in R mit Bedingungen
- 26. Mischen Sie zwei Dateien in Python und sortieren
- 27. iOS - Mischen Sie zwei Video in einzelne Videodatei mit Audio
- 28. Mischen Sie mehrere Datenrahmen auf zwei gemeinsamen Spalten
- 29. Pentaho Datenintegration: Mischen Sie zwei XML-Dateien in eine
- 30. Kombinieren Sie zwei Bilder in C#
Diese Anleitung kann helfen https://www.raywenderlich.com/69855/image-processing-in-ios-part-1-raw-bitmap-Änderung –
Wie wäre es mit Photoshop? –