亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

iOS開發日記2-虛化,模糊效果

2019-11-14 18:31:36
字體:
來源:轉載
供稿:網友

今天博主有一個虛化,模糊效果的需求,遇到了一些困難點,在此和大家分享,希望能夠共同進步.

 模糊效果,顧名思義,是將你的背景圖片進行虛化,模糊,進而在背景圖片上增加一些不虛化,不模糊的button等等,從而達到一種吸引用戶眼球的效果,通常稱之為焦點效應.開發過程中,產生模糊效果的方法很多,下面為大家簡單進行介紹.

1.最簡單的方法.

你去找你的UI,設計一張毛玻璃效果的圖片,貼上去,大功告成,模糊效果產生了.簡單,易用.但是如果你想學習更多的知識,想通過代碼的方式產生模糊效果,我們繼續.

2.CoreImage.

coreImage是IOS5中新加入的一個Objective-c的框架,提供了強大高效的圖像處理功能,用來對基于像素的圖像進行操作與分析。iOS提供了很多強大的濾鏡(Filter),現在有127種之多,隨著框架的更新,這一數字會繼續增加。這些Filter提供了各種各樣的效果,并且還可以通過濾鏡鏈將各種效果的Filter疊加起來,形成強大的自定義效果,如果你對該效果很滿意,還可以子類化濾鏡。下面將代碼貼在下面,與大家分享,如果對框架不熟悉,建議閱讀蘋果的官方API.

        CIContext *context = [CIContext contextWithOptions:nil];

        CIImage *inputImage = [[CIImage alloc] initWithImage:[UIImage imageNamed:@"detail@2x.png"]];

        CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];

        [filter setValue:inputImage forKey:kCIInputImageKey];

        [filter setValue:[NSNumber numberWithFloat:10.0] forKey:@"inputRadius"];

//        CIImage *result = [filter valueForKey:kCIOutputImageKey];

            CIImage *result=[filter outputImage];

        CGImageRef cgImage = [context createCGImage:result fromRect:[inputImage extent]];

        UIImage *image = [UIImage imageWithCGImage:cgImage];

        CGImageRelease(cgImage);

        self.imgView.image=image;

簡單易用,推薦使用

 3.vImage

如果你對性能有極大的追求,那么vImage會適合你,iOS5.0中新增了vImage API可以使用,它屬于Accelerate.Framework,所以如果你要使用它要在工程中加入這個Framework。模糊算法使用的是vImageBoxConvolve_ARGB8888這個函數.

- (UIImage *)blurryImage:(UIImage *)image withBlurLevel:(CGFloat)blur {  

if (blur < 0.f || blur > 1.f) {  

        blur = 0.5f;  

    }  

int boxSize = (int)(blur * 100);  

  boxSize = boxSize - (boxSize % 2) + 1;  

    CGImageRef img = image.CGImage;  

    vImage_Buffer inBuffer, outBuffer;  

    vImage_Error error;  

void *pixelBuffer;  

    CGDataPRoviderRef inProvider = CGImageGetDataProvider(img);  

    CFDataRef inBitmapData = CGDataProviderCopyData(inProvider);  

    inBuffer.width = CGImageGetWidth(img);  

    inBuffer.height = CGImageGetHeight(img);  

    inBuffer.rowBytes = CGImageGetBytesPerRow(img);  

    inBuffer.data = (void*)CFDataGetBytePtr(inBitmapData);  

    pixelBuffer = malloc(CGImageGetBytesPerRow(img) *   CGImageGetHeight(img));  

if(pixelBuffer == NULL)  

        NSLog(@"No pixelbuffer");  

    outBuffer.data = pixelBuffer;  

    outBuffer.width = CGImageGetWidth(img);  

    outBuffer.height = CGImageGetHeight(img);  

    outBuffer.rowBytes = CGImageGetBytesPerRow(img);  

    error = vImageBoxConvolve_ARGB8888(&inBuffer,   

                                       &outBuffer,   

                                       NULL,   

                                      0,   

                                       0,   

                                       boxSize,   

                                       boxSize,   

                                      NULL,   

                                    kvImageEdgeExtend);  

if (error) {  

        NSLog(@"error from convolution %ld", error);  

    }  

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();  

    CGContextRef ctx = CGBitmapContextCreate(  

                                    outBuffer.data,  

                                    outBuffer.width,  

                                    outBuffer.height,  

                                    8,  

                                    outBuffer.rowBytes,  

                                    colorSpace,  

                                   kCGImageAlphaNoneSkipLast);  

    CGImageRef imageRef = CGBitmapContextCreateImage (ctx);  

    UIImage *returnImage = [UIImage imageWithCGImage:imageRef];

//clean up  

    CGContextRelease(ctx);  

    CGColorSpaceRelease(colorSpace);  

    free(pixelBuffer);  

    CFRelease(inBitmapData);  

    CGColorSpaceRelease(colorSpace);  

    CGImageRelease(imageRef);  

return returnImage;  

}

4.第三方庫

可以在網上找到一些不錯的第三方庫,產生模糊效果.但是個人不推薦使用,斷更永遠是第三方庫最大的詬病.

5.8.0新開放API

在評論區看到大神@ZweiZhao的代碼,發現開放了新的API,十分感謝.在這里加上注釋,與大家分享.

 
iOS 8 后更新的  UIBlurEffect類和 UIVisualEffectView類使這種特效應用更加便捷,高效.使用也非常簡便,UIBlurEffect 類是設定毛玻璃特效的類型,UIVisualEffectView類在創建時加入上一個類對象,剩下的跟普通的view 控件等用法就一樣了.

   //  創建需要的毛玻璃特效類型

    UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];

    //  毛玻璃view 視圖

    UIVisualEffectView *effectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];

    //添加到要有毛玻璃特效的控件中

    effectView.frame = self.imageV.bounds;

    [self.imageV addSubview:effectView];

    //設置模糊透明度

    effectView.alpha = .8f;

 

http://blog.sina.cn/dpool/blog/s/blog_92ac2c5b0101cm5b.html?plg_nld=1&plg_uin=1&plg_auth=1&vt=4&plg_usr=1&plg_nld=1&plg_vkey=1&plg_dev=1

http://www.49028c.com/kenshincui/p/3959951.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
福利二区91精品bt7086| 国产精品日日摸夜夜添夜夜av| 亚洲日本欧美日韩高观看| 欧美肥臀大乳一区二区免费视频| 欧美人与性动交a欧美精品| 欧美成人黑人xx视频免费观看| 日韩在线不卡视频| 国产精品久久久久久婷婷天堂| 日韩中文字幕第一页| 亚洲在线视频福利| 午夜精品久久久99热福利| 欧美精品精品精品精品免费| 国产精品6699| 91在线色戒在线| 中文字幕亚洲一区二区三区五十路| 欧美日韩在线视频观看| 久久这里只有精品99| 国产欧美日韩丝袜精品一区| 国模精品一区二区三区色天香| 成人亚洲综合色就1024| 97涩涩爰在线观看亚洲| 一区三区二区视频| 欧美视频在线观看免费网址| 亚洲男人天堂手机在线| 中日韩美女免费视频网站在线观看| 欧美精品免费在线观看| 久久久精品免费| 欧美视频中文字幕在线| 欧亚精品中文字幕| 日韩女优人人人人射在线视频| 日韩av在线免费看| 欧美日韩美女在线观看| 国内免费久久久久久久久久久| 成人激情视频小说免费下载| 国产亚洲在线播放| 日本乱人伦a精品| 91国产一区在线| 欧美日韩国产精品专区| 欧美成人一区二区三区电影| 欧美激情精品久久久久久蜜臀| 日韩电影视频免费| 亚洲香蕉成人av网站在线观看| 韩日精品中文字幕| 日韩经典中文字幕在线观看| 久久不射热爱视频精品| 亚洲精品国产综合区久久久久久久| 久久久噜噜噜久久| 国产日韩欧美91| 中文字幕综合在线| 国产精品丝袜一区二区三区| 欧美日韩国产成人在线| 国产精品激情av电影在线观看| 日本高清久久天堂| 国产精欧美一区二区三区| 视频在线观看一区二区| 欧美俄罗斯性视频| 色阁综合伊人av| 成人精品在线视频| 欧美裸体xxxx极品少妇| 欧美日韩国产在线播放| 欧美日韩国产一区中文午夜| 911国产网站尤物在线观看| 亚洲一区美女视频在线观看免费| 黑人精品xxx一区| 欧美精品激情blacked18| 91禁国产网站| 亚洲一区国产精品| 欧美日韩成人在线观看| 国产亚洲精品久久久久动| 91美女片黄在线观| 亚洲精品日韩激情在线电影| 国产精品大陆在线观看| 国产精品无码专区在线观看| 欧美尺度大的性做爰视频| www.日本久久久久com.| 亚洲第一区第二区| 成人a在线视频| 色综合视频网站| 欧美日韩高清区| 日产精品久久久一区二区福利| 久久久国产一区二区三区| 一区二区三区视频免费| 九九久久久久99精品| 日本老师69xxx| 日韩电影免费在线观看中文字幕| 在线精品91av| 久久久久久成人精品| 国内精品久久久久影院优| 黄色一区二区在线观看| 久久视频国产精品免费视频在线| 亚洲美女性视频| 亚洲免费电影一区| 久久精品国产欧美亚洲人人爽| 尤物九九久久国产精品的特点| 亚洲欧美激情精品一区二区| 久久中国妇女中文字幕| 亚洲最大福利视频| 国产精品网站视频| 亚洲天堂日韩电影| 亚洲精品在线91| 久久成人精品一区二区三区| 国产精品福利在线| 日韩视频免费在线| 国产日韩中文字幕| 久久久精品影院| 成人亚洲激情网| 欧美一区二区影院| 中文字幕国产亚洲2019| 日韩欧美高清在线视频| 午夜免费久久久久| 日韩欧美在线视频| 亚洲国产精品电影在线观看| 美女扒开尿口让男人操亚洲视频网站| 欧美日韩国产中文精品字幕自在自线| 97免费视频在线| 国产日韩换脸av一区在线观看| 亚洲精品国产品国语在线| 激情懂色av一区av二区av| 久久久精品美女| 久久久人成影片一区二区三区观看| 久久99视频精品| 成人高清视频观看www| 色偷偷av一区二区三区乱| 亚洲成人激情在线观看| 91国偷自产一区二区三区的观看方式| 91色p视频在线| 成人一区二区电影| 国产精品成人久久久久| 日韩精品高清在线观看| 国产91亚洲精品| 精品综合久久久久久97| 久久国产精品久久久久| 欧美精品在线看| 美女久久久久久久久久久| 久久久精品999| 国产精品精品久久久| 中文字幕亚洲欧美| 亚洲а∨天堂久久精品喷水| 91久久国产综合久久91精品网站| 日韩电影大片中文字幕| 国产精品久久久久久久天堂| 久久综合电影一区| 一本色道久久88综合亚洲精品ⅰ| 欧美性jizz18性欧美| 深夜精品寂寞黄网站在线观看| 亚洲最新av在线| 久久久久国色av免费观看性色| 国产精品视频资源| 欧日韩不卡在线视频| 精品久久久久久久中文字幕| 国产成人jvid在线播放| 精品在线小视频| 国产精品扒开腿做| 久久精品国产欧美亚洲人人爽| 亚洲免费av电影| 91精品国产高清自在线| 亚洲综合av影视| 欧美激情视频在线免费观看 欧美视频免费一| 精品伊人久久97| 青青久久av北条麻妃海外网| 国产欧美一区二区| 国产69精品久久久久9999| 最近2019年日本中文免费字幕| 久久久av一区|