zoukankan      html  css  js  c++  java
  • iOS

    
    
     1 #import <UIKit/UIKit.h>
     2 #import <Accelerate/Accelerate.h>
     3 
     4 @interface UIImage (TY_ImageEditP)
     5 /**
     6  *  对图片进行模糊
     7  *
     8  *  @param image 要处理图片
     9  *  @param blur  模糊系数 (0.0-1.0)
    10  *
    11  *  @return 处理后的图片
    12  */
    13 + (UIImage *)blurryImage:(UIImage *)image withBlurLevel:(CGFloat)blur;
    14 
    15 @end
    
    
    


    1
    #import "UIImage+TY_ImageEditP.h" 2 3 @implementation UIImage (TY_ImageEditP) 4 + (UIImage *)blurryImage:(UIImage *)image withBlurLevel:(CGFloat)blur { 5 if (!image) { 6 return nil; 7 } 8 if ((blur < 0.0f) || (blur > 1.0f)) { 9 blur = 0.5f; 10 } 11 12 int boxSize = (int)(blur * 200); 13 boxSize -= (boxSize % 2) + 1; 14 15 CGImageRef img = image.CGImage; 16 17 vImage_Buffer inBuffer, outBuffer; 18 vImage_Error error; 19 void *pixelBuffer; 20 21 CGDataProviderRef inProvider = CGImageGetDataProvider(img); 22 CFDataRef inBitmapData = CGDataProviderCopyData(inProvider); 23 24 inBuffer.width = CGImageGetWidth(img); 25 inBuffer.height = CGImageGetHeight(img); 26 inBuffer.rowBytes = CGImageGetBytesPerRow(img); 27 inBuffer.data = (void*)CFDataGetBytePtr(inBitmapData); 28 29 pixelBuffer = malloc(CGImageGetBytesPerRow(img) * CGImageGetHeight(img)); 30 31 outBuffer.data = pixelBuffer; 32 outBuffer.width = CGImageGetWidth(img); 33 outBuffer.height = CGImageGetHeight(img); 34 outBuffer.rowBytes = CGImageGetBytesPerRow(img); 35 36 error = vImageBoxConvolve_ARGB8888(&inBuffer, &outBuffer, NULL, 37 0, 0, boxSize, boxSize, NULL, 38 kvImageEdgeExtend); 39 40 41 if (error) { 42 NSLog(@"error from convolution %ld", error); 43 } 44 45 CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 46 CGContextRef ctx = CGBitmapContextCreate( 47 outBuffer.data, 48 outBuffer.width, 49 outBuffer.height, 50 8, 51 outBuffer.rowBytes, 52 colorSpace, 53 CGImageGetBitmapInfo(image.CGImage)); 54 55 CGImageRef imageRef = CGBitmapContextCreateImage (ctx); 56 UIImage *returnImage = [UIImage imageWithCGImage:imageRef]; 57 58 //clean up 59 CGContextRelease(ctx); 60 CGColorSpaceRelease(colorSpace); 61 62 free(pixelBuffer); 63 CFRelease(inBitmapData); 64 65 CGColorSpaceRelease(colorSpace); 66 CGImageRelease(imageRef); 67 68 return returnImage; 69 } 70 71 @end

    例子~:

    1  __weak typeof(self) weakSelf = self;
    2                 [self.myImageView sd_setImageWithURL:[NSURL URLWithString:[ZLModel checkImageUrlNsstring:myModel.address withHttp:TY_IMAGEURL]] placeholderImage:[UIImage imageNamed:consultDefault] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
    3                     //毛玻璃效果处理
    4                     UIImage *imageN = [UIImage blurryImage:image withBlurLevel:0.2];
    5                     weakSelf.imageN = imageN;
    6                     self.myImageView.image = self.imageN;
    7 
    8                 }];
  • 相关阅读:
    Enable mod_rewrite in apache2.2
    静态注册BroadcastReceiver内部类
    Install MySQL Server 5 on Ubuntu
    Install PHP and Apache
    Android BroadcastReceiver应用详解
    C 简易贪吃蛇的编写
    MyBatis学习存档(1)——入门
    MyBatis学习存档(2)——核心配置文件
    Maven学习存档(2)——settings.xml配置
    Java中的float、double计算精度问题
  • 原文地址:https://www.cnblogs.com/henusyj-1314/p/9523668.html
Copyright © 2011-2022 走看看