- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 CIFilter 添加到视频中。但我使用 UISliders 更改值,因为 AVPlayer 需要时间来播放添加过滤器的视频。我搜索了这个问题,UISlider 值不断变化,并且它也需要浮点值。因为每次过滤器都会添加到视频并播放。我想知道当 slider 值连续变化时如何更改 CIFilter 的值并且不延迟 AVPlayer。
float value = sender.value;
CIFilter *filter = [CIFilter filterWithName:@"CIColorControls"];
AVVideoComposition *composition = [AVVideoComposition videoCompositionWithAsset:tempAVAsset applyingCIFiltersWithHandler:
^(AVAsynchronousCIImageFilteringRequest *request){
NSError *err = nil;
CIImage *filtered = [request.sourceImage imageByClampingToExtent];
[filter setDefaults];
[filter setValue:filtered forKey:kCIInputImageKey];
[filter setValue:[NSNumber numberWithFloat:0.00] forKey:@"inputSaturation"];
[filter setValue:[NSNumber numberWithFloat:0.00] forKey:@"inputBrightness"];
[filter setValue:[NSNumber numberWithFloat:value] forKey:@"inputContrast"];
CIImage *output = [filter.outputImage imageByCroppingToRect:request.sourceImage.extent];
if (filtered)
[request finishWithImage:output context:nil];
else
[request finishWithError:err];
}];
最佳答案
当 slider 值更改时,您可以仅更改合成 block 外部的过滤器参数,而不是在 block 内部重新设置它。所以就这样做
[adjustFilter setValue:[NSNumber numberWithFloat:sender.value] forKey:@"inputContrast"];
在您的 valueChanged
回调中而不是在组合 block 中。这样,过滤器始终会获取最新值并将其用于下一个视频帧。
编辑:
以下是 View Controller 内可能实现的一些部分:
@interface DemoViewController ()
@property (strong, nonatomic) CIFilter *filter;
@property (strong, nonatomic) AVPlayer *player;
@property (strong, nonatomic) AVAsset *tempAVAsset;
@end
@implementation DemoViewController
- (void)viewDidLoad {
[super viewDidLoad];
// setup filter
self.filter = [CIFilter filterWithName:@"CIColorControls"];
[self.filter setDefaults];
[self.filter setValue:[NSNumber numberWithFloat:0.00] forKey:@"inputSaturation"];
[self.filter setValue:[NSNumber numberWithFloat:0.00] forKey:@"inputBrightness"];
AVVideoComposition *composition = [AVVideoComposition videoCompositionWithAsset:self.tempAVAsset applyingCIFiltersWithHandler:
^(AVAsynchronousCIImageFilteringRequest *request){
NSError *err = nil;
CIImage *filtered = [request.sourceImage imageByClampingToExtent];
[self.filter setValue:filtered forKey:kCIInputImageKey];
CIImage *output = [self.filter.outputImage imageByCroppingToRect:request.sourceImage.extent];
if (filtered)
[request finishWithImage:output context:nil];
else
[request finishWithError:err];
}
];
// setup player with composition
// ...
}
- (IBAction)sliderValueChanged:(UISlider*)sender
{
// get the new slider value and assign it to the filter
[self.filter setValue:[NSNumber numberWithFloat:sender.value] forKey:@"inputContrast"];
}
@end
关于ios - 如何使用 UISlider 更改视频的 CIFilter 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57820677/
我正在尝试对 ARSCNView 中的相机实时 Steam 图像应用模糊效果。我检查了 WWDC 视频。他们只提到了使用 Metal 进行自定义渲染,但我在网上没有找到任何完整的示例。知道怎么做吗?
是否有任何 CIFilter 具有与 Photoshop“添加噪点”滤镜类似的效果? 最佳答案 您可以使用CIRandomGenerator与一些混合过滤器(加法、筛选或其他)结合使用。总效应链应该是
是否有显示所有 CIFilter 及其各自值范围的作弊列表? 苹果怎么能逃脱写doc like this列出所有过滤器而不告诉我们可能的范围? 来吧苹果。 最佳答案 我已经对其进行了更新,以使其能够正
static func effectTransfer(image: UIImage) -> UIImage { let coreImage = CIImage(image: image)
我正在拍摄 subview 的快照并将其转换为图像: let image = UIImage(view: swiftyDraw) let scaledImage = scaleImage(image:
我需要有关如何在内存上高效使用 CIFilter 的建议。基本上,我将两个过滤器链接在一起。棘手的部分是我必须先将 UIImage 转换为 CIImage,然后再调用过滤器。代码贴在下面: CIIma
我发现 CIFilter 与 CIGaussianBlur 滤镜的行为非常奇怪。 我正在对不同的图像快速连续地多次执行此方法。有时,将返回“最后处理的图像”而不是我发送的图像。例如,如果我有图像: A
谁能解释一下,我们如何为过滤器中的不同输入参数识别正确的值。我尝试了默认值,但只有少数过滤器对其他不起作用的过滤器提供了适当的效果。 谁能指导我以正确的方式实现 CIFilter? 谢谢 最佳答案 内
我知道可以使用像素缓冲区更改像素的颜色,如下面的代码所示,但我只想使用“CIFilter”模糊像素而不是更改颜色。我不想在整个图像上应用“CIFilter”。 //data pointer – sto
我正在尝试使用以下代码向图层添加模糊效果。 但它不起作用,有什么建议吗? let layer = CALayer() layer.frame = CGRect(x: 150, y: 150, widt
我正在将 CIFilter 应用于 UIImage,但它会减慢我的 UITableView 上的滚动速度。有什么我可以做的吗? - (UITableViewCell *)tableView:(UITa
我正在使用 CISourceOverCompositing 混合两个图像。使用此代码可以正常处理相同大小的图像: CIFIlter *filter1 = [CIFilter filterWithNam
我目前正在尝试用一张由不同的 CIFilter 过滤的图片填充一个 Collection View 。我使用 apples 的方式来获取一组过滤器。 let filterNames = CIFilte
我正在将 CIFilter 应用于肖像图像。由于某种原因,它顺时针旋转了 90 度。我怎样才能解决这个问题?我的代码在下面 var imgOrientation = oImage.imageOrien
我编写了一个自己的 CIFilter 内核,它对相机信号进行一些图像处理。它需要两个参数:参数一是“inputImage”(当前相机图像),参数2是“backgroundImage”,它正在使用第一个
我在图像上添加多个 CIFilter 时遇到问题,例如当我添加亮度滤镜然后尝试添加对比度图像时,图像将变为原始图像(丢失亮度滤镜),然后添加对比度滤镜。 - (IBAction)brightnessS
有谁知道自定义 CIFilter 的图像大小有什么限制?我创建了一个过滤器,当图像高达 2 兆像素时,它可以按预期执行,但当图像更大时,会产生非常奇怪的结果。我已经在我的 cocoa 应用程序和 qu
我想以网格和列表模式复制停靠堆栈的背景。背景是半透明的黑色,带有模糊效果: Example of dock stack in grid mode http://www.thecustommac.com
我正在使用以下代码进行曝光调整及其工作。我需要锐化、降噪、高光、色温、阴影、模糊等滤镜名称。 [CIFilter filterWithName: @"CIExposureAdjust"
我有一个圆形 ImageView 。我设置了它的图像并给出了色调效果,如下所示,效果很好。 let filter = CIFilter(name: "CIPhotoEffectTonal")!
我是一名优秀的程序员,十分优秀!