用按钮反转一个UIImage



我有一个简单的应用程序,我可以拍摄照片或选择和现有的照片上的相机卷,然后在UIImageView中显示图像。我想要有一个按钮,你可以按下并反转选中的图像然后在相机胶卷中显示它。我的问题是,如何反转一个UIImage的颜色,然后使用新的反转一个显示在ImageView?我看过其他相关的帖子,但没有一个解释如何实现代码。我对xcode相当陌生,非常感谢所有的反馈。

这是我的。m文件的视图控制器:

#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize imageView;
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
-(IBAction)takePhoto {
    picker1 = [[UIImagePickerController alloc] init];
    picker1.delegate = self;
    [picker1 setSourceType:UIImagePickerControllerSourceTypeCamera];
    [self presentViewController:picker1 animated:YES completion:nil];
}
-(IBAction)ChooseExisting {
    picker2 = [[UIImagePickerController alloc] init];
    picker2.delegate = self;
    [picker2 setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
    [self presentViewController:picker2 animated:YES completion:nil];
}
-(IBAction)invertImage {
}
-(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    imageFinal = [info objectForKey:UIImagePickerControllerOriginalImage];
    [imageView setImage:imageFinal];
    [self dismissViewControllerAnimated:YES completion:nil];
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
    [self dismissViewControllerAnimated:YES completion:nil];
}
@end

我看到negetiveImage方法有很多代码。下面是一个使用Core Image滤镜的简单例子。

包括核心图像框架到您的项目导入核心图像标题

#import <CoreImage/CoreImage.h>

下面的代码应该返回一个颠倒的UIImage

UIImage *inputImage = [UIImage imageNamed:@"imageName"];
CIFilter* filter = [CIFilter filterWithName:@"CIColorInvert"];
[filter setDefaults];
[filter setValue:inputImage.CIImage forKey:@"inputImage"];
UIImage *outputImage = [[UIImage alloc] initWithCIImage:filter.outputImage];

outputImage将被反转

给你一个简单的答案,你可以反转拥有你的UIImageUIImageView

要反转,只需使用

[yourImageView setTransform:CGAffineTransformMakeScale(-1, 1)]; // flip horizontally
[yourImageView setTransform:CGAffineTransformMakeScale(1, -1)]; // flip vertically
[yourImageView setTransform:CGAffineTransformMakeScale(-1, -1)]; // flip horizontally and vertically

并使用

使其恢复正常
[yourImageView setTransform:CGAffineTransformIdentity]; // bring the view back to normal.

希望这对你有帮助,祝你的应用一切顺利。

最新更新