gpt4 book ai didi

ios - 使用 CIFilter 后图像自动旋转

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:21:56 24 4
gpt4 key购买 nike

我正在编写一个应用程序,让用户可以拍照然后对其进行编辑。我正在使用 UISliders 实现亮度/对比度/饱和度工具,并使用 Core Image Filter 类来实现。当我打开应用程序时,我可以拍照并正确显示。但是,如果我选择编辑图片,然后使用任何描述的 slider 工具,图像将逆时针旋转 90 度。这是有问题的代码:

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.

self.navigationItem.hidesBackButton = YES; //hide default nav

//get image to display
DBConnector *dbconnector = [[DBConnector alloc] init];
album.moments = [dbconnector getMomentsForAlbum:album.title];
Moment *mmt = [album.moments firstObject];
_imageView.image = [mmt.moment firstObject];

CGImageRef aCGImage = _imageView.image.CGImage;
CIImage *aCIImage = [CIImage imageWithCGImage:aCGImage];
_editor = [CIFilter filterWithName:@"CIColorControls" keysAndValues:@"inputImage", aCIImage, nil];

_context = [CIContext contextWithOptions: nil];
[self startEditControllerFromViewController:self];

}

//cancel and finish buttons
- (BOOL) startEditControllerFromViewController: (UIViewController*) controller {

[_cancelEdit addTarget:self action:@selector(cancelEdit:) forControlEvents:UIControlEventTouchUpInside];
[_finishEdit addTarget:self action:@selector(finishEdit:) forControlEvents:UIControlEventTouchUpInside];

return YES;
}

//adjust brightness
- (IBAction)brightnessSlider:(UISlider *)sender {

[_editor setValue:[NSNumber numberWithFloat:_brightnessSlider.value] forKey: @"inputBrightness"];

CGImageRef cgiimg = [_context createCGImage:_editor.outputImage fromRect:_editor.outputImage.extent];
_imageView.image = [UIImage imageWithCGImage: cgiimg];
CGImageRelease(cgiimg);
}

我认为问题源于 brightnessSlider 方法,基于我放置的断点。有没有办法阻止我的照片自动旋转?如果不是,如何将其旋转回正常方向?

最佳答案

发帖几分钟后,我就找到了我自己问题的答案。去搞清楚。无论如何,我只是将 slider 方法更改为以下内容:

- (IBAction)brightnessSlider:(UISlider *)sender {

[_editor setValue:[NSNumber numberWithFloat:_brightnessSlider.value] forKey: @"inputBrightness"];

CGImageRef cgiimg = [_context createCGImage:_editor.outputImage fromRect:_editor.outputImage.extent];
UIImageOrientation originalOrientation = _imageView.image.imageOrientation;
CGFloat originalScale = _imageView.image.scale;

_imageView.image = [UIImage imageWithCGImage: cgiimg scale:originalScale orientation:originalOrientation];
CGImageRelease(cgiimg);

}

这只是记录图像的原始方向和比例,并在数据转换回 UIImage 时重新设置它们。希望这对其他人有帮助!

关于ios - 使用 CIFilter 后图像自动旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24833285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com