1. 程式人生 > >ios毛玻璃效果

ios毛玻璃效果

1.倒入

#import <Accelerate/Accelerate.h>

//加模糊效果,image是圖片,blur是模糊度
- (UIImage *)blurryImage:(UIImage *)image withBlurLevel:(CGFloat)blur {
    //模糊度,
    if ((blur < 0.1f) || (blur > 2.0f)) {
        blur = 0.5f;
    }
    
    //boxSize必須大於0
    int boxSize = (int)(blur * 100);
    boxSize -= (boxSize % 2) + 1;
    NSLog(@"boxSize:%i",boxSize);
    //影象處理
    CGImageRef img = image.CGImage;
    //需要引入#import <Accelerate/Accelerate.h>
    /*
     This document describes the Accelerate Framework, which contains C APIs for vector and matrix math, digital signal processing, large number handling, and image processing.
     本文件介紹了Accelerate Framework,其中包含C語言應用程式介面(API)的向量和矩陣數學,數字訊號處理,大量處理和影象處理。
     */
    
    //影象快取,輸入快取,輸出快取
    vImage_Buffer inBuffer, outBuffer;
    vImage_Error error;
    //畫素快取
    void *pixelBuffer;
    
    //資料來源提供者,Defines an opaque type that supplies Quartz with data.
    CGDataProviderRef inProvider = CGImageGetDataProvider(img);
    // provider’s data.
    CFDataRef inBitmapData = CGDataProviderCopyData(inProvider);
    
    //寬,高,位元組/行,data
    inBuffer.width = CGImageGetWidth(img);
    inBuffer.height = CGImageGetHeight(img);
    inBuffer.rowBytes = CGImageGetBytesPerRow(img);
    inBuffer.data = (void*)CFDataGetBytePtr(inBitmapData);
    
    //像數快取,位元組行*圖片高
    pixelBuffer = malloc(CGImageGetBytesPerRow(img) * CGImageGetHeight(img));
    
    outBuffer.data = pixelBuffer;
    outBuffer.width = CGImageGetWidth(img);
    outBuffer.height = CGImageGetHeight(img);
    outBuffer.rowBytes = CGImageGetBytesPerRow(img);
    
    
    // 第三個中間的快取區,抗鋸齒的效果
    void *pixelBuffer2 = malloc(CGImageGetBytesPerRow(img) * CGImageGetHeight(img));
    vImage_Buffer outBuffer2;
    outBuffer2.data = pixelBuffer2;
    outBuffer2.width = CGImageGetWidth(img);
    outBuffer2.height = CGImageGetHeight(img);
    outBuffer2.rowBytes = CGImageGetBytesPerRow(img);
    
    //Convolves a region of interest within an ARGB8888 source image by an implicit M x N kernel that has the effect of a box filter.
    error = vImageBoxConvolve_ARGB8888(&inBuffer, &outBuffer2, NULL, 0, 0, boxSize, boxSize, NULL, kvImageEdgeExtend);
    error = vImageBoxConvolve_ARGB8888(&outBuffer2, &inBuffer, NULL, 0, 0, boxSize, boxSize, NULL, kvImageEdgeExtend);
    error = vImageBoxConvolve_ARGB8888(&inBuffer, &outBuffer, NULL, 0, 0, boxSize, boxSize, NULL, kvImageEdgeExtend);
    
    
    if (error) {
        NSLog(@"error from convolution %ld", error);
    }
    
    //    NSLog(@"位元組組成部分:%zu",CGImageGetBitsPerComponent(img));
    //顏色空間DeviceRGB
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    //用圖片建立上下文,CGImageGetBitsPerComponent(img),7,8
    CGContextRef ctx = CGBitmapContextCreate(
                                             outBuffer.data,
                                             outBuffer.width,
                                             outBuffer.height,
                                             8,
                                             outBuffer.rowBytes,
                                             colorSpace,
                                             CGImageGetBitmapInfo(image.CGImage));
    
    //根據上下文,處理過的圖片,重新元件
    CGImageRef imageRef = CGBitmapContextCreateImage (ctx);
    UIImage *returnImage = [UIImage imageWithCGImage:imageRef];
    
    //clean up
    CGContextRelease(ctx);
    CGColorSpaceRelease(colorSpace);
    
    free(pixelBuffer);
    free(pixelBuffer2);
    CFRelease(inBitmapData);
    
    CGColorSpaceRelease(colorSpace);
    CGImageRelease(imageRef);
    
    return returnImage;
}

demo下載:http://download.csdn.net/detail/daiyelang/8270717

相關推薦

iOS 毛玻璃效果設置

true dds style image sha init uiview void brush //設置毛玻璃效果 +(void)blurEffrct:(UIView *)view{ UIBlurEffect* effect = [UIBlurEffect eff

iOS 毛玻璃效果參考

- (void)viewDidLoad {     [super viewDidLoad]; self.imageView = [[UIImageView alloc] initWithImag

ios毛玻璃效果

1.倒入 #import <Accelerate/Accelerate.h> //加模糊效果,image是圖片,blur是模糊度 - (UIImage *)blurryImage:(UIImage *)image withBlurLevel:(CGFloat)

仿IOS毛玻璃效果BlurView

BlurView 詳細介紹 BlurView 是Android下類似 iOS 毛玻璃效果控制元件。 使用:   <eightbitlab.com.blurview.BlurView     

iOS毛玻璃效果(不需要任何第三方了)

分享兩種毛玻璃效果設定的方法,不需要任何三方東東,先看效果: 原圖: 方法一(iOS8系統方法): 方法二: 下面是示例程式碼: #import "ViewController.h"@interface ViewController ()  {      UIIm

android 製作ios毛玻璃效果(圖片模糊處理)

先不說廢話直接上效果圖 毛玻璃效果在ios裡是非常常見的,但是在android上卻很少見,這是為什麼呢? ios系統本身就應用了非常多的毛玻璃效果,系統對這種效果有相對比較好的處理,但是android系統並沒有類似的api,直到現在的SDK22也沒有

iOS 實現簡單的毛玻璃效果

rec 毛玻璃效果 實現簡單 ges 導航欄 view設置 with 技術 簡單 最近在整理導航欄的漸隱漸現效果,整理過程中偶然學會了圖片的毛玻璃效果實現,很簡單,不多說了,先上圖看看效果對比, 這是原圖, 這是加了效果後的,創建圖片的代碼就不上了,下面看下添加效果的代碼

IOS的專利?Android也能流暢實現毛玻璃效果效果

背景介紹 上圖就是我們在IOS裝置上經常能夠見到的毛玻璃(高斯模糊)效果。不得不說,這種效果在適合的場景下使用,能夠獲得絕佳的美感。但是鑑於Android裝置效能和相容性問題,我們通常很難在Android裝置上見到這種效果。 但這並不是IOS的專利效果,Android也能輕

iOS系統自帶毛玻璃效果

UIImageView * imageview = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"螢幕快照 2015-12-18 下午10.51.33"]];     imageview.userInteractionEnabled = Y

iOS 自定義UITabbar新增系統毛玻璃效果

UIImageView *backView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, TabBar_Height_1)]; backView.image = [UIIm

毛玻璃效果iOS

一張清楚的圖片變的模糊了,也就是所謂的毛玻璃效果,通過檢視圖層可以發現,它只是在原有的圖片上加了一個View,而這個View具有毛玻璃效果, 圖層檢視如下圖所示: 最終效果圖如下圖: 1 1

iOS背景虛化(毛玻璃效果

iOS SDK 自 iOS8.0 開始提供了背景虛化的相關 api,簡單的幾句程式碼就可以實現虛化背景,毛玻璃特效,有需要的趕緊試試! UIBlurEffect *blur = [UIBlur

ios8 毛玻璃效果

init with visual span 玻璃效果 html led blur fec UIBlurEffect * blur = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; UIVisualEffec

css毛玻璃效果

shadow relative 毛玻璃效果 class posit spa mar hid osi #left:before{ position: relative; z-index: -1; filter: blur(20px);

圖片視頻毛玻璃效果實現

inset all typeof gen type equal AD imp AI 毛玻璃效果主要實現就是在圖片(imageview)上加一個 UIVisualEffectView @property (nonatomic, strong) UIVisualEffectVi

view添加毛玻璃效果兩種方法

toolbar with mage lB cgrect width fault init pre 第一種方法: UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];

css3----毛玻璃效果

alt 內容 上下 ORC Language 學習 tca 圖書 如果 附上要實現的效果圖,如果我截圖截的不明顯的話,我可以解說下: 中間是獲取到一本書的封面,然後背景按獲取到的封面平鋪,並且模糊,上面還有一層透明度0.65的蒙層 聽著是不是很簡單,實現起來還是有很多問題的

iOS動畫效果實戰篇之CABasicAnimation的使用

最近正在研究iOS動畫效果的實現,目的也是為了自己能夠寫出比較炫酷的動畫效果。趁著專案不怎麼忙,抽出時間寫篇文章來記錄一下自己的學習成果及實戰效果。由於本人是最近才開始寫部落格,不善言辭,不喜勿噴,如果錯誤,還請指正。 本篇文章的動畫效果也是我在學習動畫效果的過程中其中一個頁面的動畫

WPF 的毛玻璃效果

etc none highlight tty svg flow tle http 原創 原文:WPF 的毛玻璃效果 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/koloumi/ar

opencv學習13——毛玻璃效果

一、 影象毛玻璃效果 1.馬賽克是指定範圍內的統一填充,毛玻璃是指定範圍內的隨機取值 2.np.random.random(),隨機產生[0,1]內的數 二、 import cv2 import numpy as np img = cv2.imread('imag