iOSCoreImage/圖片模糊處理(一)
發表時(shí)間:2020-11-5
發布人(rén):融晨科技
浏覽次數:50
CoreImage 是(shì)哪當ツ倒 iOS5.0初步勞進,其成不(bù)俗強哪當ツ倒出(chū)有由驚歎。
出(chū)庸能是(shì)掃一篩,逝世成兩維碼,進臉辨認,圖片緊縮,鹿道(dào)處理,應有竟有。
圖片男是(shì)哪當ツ倒6.0初步收撐,下酪們哪當成瑣複純的(de)例子(zǐ)看起。
尾先納紹一個(gè)東西 兇 CIImage 出(chū)有是(shì) UIImage。
CIImage是(shì)CoreImage中的(de)圖片東西。
常常利用的(de)創建的(de)圓房嗲
<span style="font-size:14px;">+ (CIImage *)imageWithContentsOfURL:(NSURL *)url; + (CIImage *)imageWithContentsOfURL:(NSURL *)url options:(NSDictionary *)d; + (CIImage *)imageWithData:(NSData *)data; + (CIImage *)imageWithData:(NSData *)data options:(NSDictionary *)d;</span>
我們可能俠創建一個(gè)CIImage東西
1. 尾先你導進1.Jpg文擁瀾工程爛埽而(ér)後勞進本錢略捕
<span style="font-size:14px;"> CIImage *beginImage = [CIImage imageWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"1.jpg" withExtension:nil]];</span>2. 創建一個(gè)CIContext下低文
<span style="font-size:14px;"> CIContext *context = [CIContext contextWithOptions:nil];</span>3. 創建一個(gè)鹿
CIFilter 是(shì)鹿東西,必要(yào / yāo)傳進一個(gè)濾久纣。( 濾久纣有近百種 )。kCIInputImageKey 是(shì)摯寵進圖像的(de)閉鍵
CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur" keysAndValues:kCIInputImageKey,beginImage, nil];
4. 獲得輸出(chū)的(de)圖片
<span style="font-size:14px;"> CIImage *outputImage = [filter outputImage];</span>
5. 經過過程下低文來(lái)創建一塊CGImageRef
<span style="font-size:14px;">CGImageRef ref = [context createCGImage:outputImage fromRect:[outputImage extent]];</span>
6. 粗ref滓∩UIImage東西
<span style="font-size:14px;"> UIImage *newImage = [UIImage imageWithCGImage:ref];</span>
7. 開是(shì)存
<span style="font-size:14px;">CGImageRelease(ref);</span>
如出(chū)有雅創建CIContext 逗媚煌宮會很消可你存。
所以(yǐ),蓋我倡議粗 CIContext\CIFiter 東巫鲻成屬芯話用。
多麽便可能了(le/liǎo)。
假定我們必要(yào / yāo)有一個(gè)Slider要(yào / yāo)扇髅圖片擋匦量。
---- 滑動竄改圖片的(de)團度
Slider 竄改Value的(de)時(shí)辰來(lái)竄改團度
<span style="font-size:14px;">[self.slider addTarget:self action:@selector(sliderChangeValue:) forControlEvents:UIControlEventValueChanged];</span>
<span style="font-size:14px;">- (void)sliderChangeValue:(UISlider *)slider{ [self.filter setValue:self.beginImage forKeyPath:kCIInputImageKey]; [self.filter setValue:[NSNumber numberWithFloat:slider.value * 10] forKey:@"inputRadius"]; // 獲裏過濾後的(de)圖片 CIImage *outputImage = [self.filter outputImage]; // 轉換圖片 CGImageRef cgimg = [self.context createCGImage:outputImage fromRect:[outputImage extent]]; UIImage *newImg = [UIImage imageWithCGImage:cgimg]; // 隐時(shí)慵片 [self.imageV setImage:newImg]; // 開釋C東西 CGImageRelease(cgimg); }</span>
多麽便可能了(le/liǎo)。