我寫了一個方法來篩選具有亮度因子和對比度因子的圖像如下:如何通過GPUImage調整圖像的亮度和對比度?
- (UIImage*)image:(UIImage*)image withBrightness:(float)brightness contrast:(float)contrast{
GPUImagePicture *imagePicture = [[GPUImagePicture alloc] initWithImage:image];
GPUImageBrightnessFilter *brightnessFilter = [[GPUImageBrightnessFilter alloc] init];
GPUImageContrastFilter *contrastFilter = [[GPUImageContrastFilter alloc] init];
[imagePicture addTarget:brightnessFilter];
[brightnessFilter addTarget:contrastFilter];
brightnessFilter.brightness = brightness; // set brightness
contrastFilter.contrast = contrast; // set contrast
[imagePicture processImage];
UIImage *filteredImage = [contrastFilter imageFromCurrentlyProcessedOutput];
return filteredImage;
}
調用此實現將引發錯誤:<Error>: CGContextDrawImage: invalid context 0x0
。
如何使用GPUImage正確實現亮度和對比度調整?
這看起來是正確的,雖然創建每次你需要處理的是要引入一些開銷圖像時新的亮度和對比度過濾器。對於實時操作,我也不會推薦通過UIImage傳入和傳出,或者(我會使用GPUImageView進行實時預覽),但我不知道您需要的其餘部分。這是來自存儲庫的最新代碼嗎?哪種方法觸發了CGContextDrawImage錯誤,GPUImagePicture分配還是最終提取圖像? –
感謝@BradLarson和您的超棒圖書館!我發現圖像參數是空的,所以它引發了錯誤。 –