美文网首页
图片添加杂色噪点

图片添加杂色噪点

作者: CoderLT | 来源:发表于2015-06-08 18:24 被阅读329次
/**
 *  伪随机数
 */
static NSInteger ATNoiseRseed = 115;
static inline NSInteger ATNoiseRand() {
    return (ATNoiseRseed = (ATNoiseRseed * 214013 + 2531011) & ((1U << 31) - 1)) >> 16;
}
/**
 *  图片加入杂色, intensity: 0.0 ~ 1.0f, gary: YES标示单色噪点
 */
- (UIImage *)imageWithNoiseIntensity:(CGFloat)intensity gray:(BOOL)isGray
{
    UIImage *image;
    int width = self.size.width * self.scale;
    int height = self.size.height * self.scale;

    CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
    if (colorspace == NULL) {
        ATLog(@"Create Colorspace Error!");
        return nil;
    }

    Byte *imgData = NULL;
    imgData = malloc(width * height * 4);
    if (imgData == NULL) {
        ATLog(@"Memory Error!");
        CGColorSpaceRelease(colorspace);
        return nil;
    }

    CGContextRef bmpContext = CGBitmapContextCreate(imgData, width, height, 8, width * 4, colorspace, (CGBitmapInfo)kCGImageAlphaPremultipliedLast);
    if (!bmpContext) {
        ATLog(@"Create Bitmap context Error!");
        CGColorSpaceRelease(colorspace);
        return nil;
    }

    CGContextDrawImage(bmpContext, CGRectMake(0, 0, width, height), self.CGImage);
    for (long i = 0; i < width * height; i++) {
        int randR = (ATNoiseRand()%511-255) * intensity;
        int randG = isGray ? randR : (ATNoiseRand()%511-255) * intensity;
        int randB = isGray ? randR : (ATNoiseRand()%511-255) * intensity;

        imgData[4*i+0] = MAX(0, MIN(255, (imgData[4*i+0] + randR)));
        imgData[4*i+1] = MAX(0, MIN(255, (imgData[4*i+1] + randG)));
        imgData[4*i+2] = MAX(0, MIN(255, (imgData[4*i+2] + randB)));
        imgData[4*i+3] = 255;
    }

    CGImageRef imageRef = CGBitmapContextCreateImage(bmpContext);
    if (imageRef != NULL) {
        image = [[UIImage alloc] initWithCGImage:imageRef];
        CGImageRelease(imageRef);
    }

    CGColorSpaceRelease(colorspace);
    CGContextRelease(bmpContext);
    free(imgData);

    return image;
}

为UIImage添加分类,图片加入杂色, intensity: 0.0 ~ 1.0f, gary: YES标示单色噪点。

相关文章

  • 图片添加杂色噪点

    为UIImage添加分类,图片加入杂色, intensity: 0.0 ~ 1.0f, gary: YES标示单色噪点。

  • opencv入门案例——图片中添加椒盐噪点

    本文主要讲解opencv对图片最基本的处理,给图片添加椒盐噪点 实例代码 效果展示 原图 处理后

  • 阿诺德官方帮助文档-降噪流程

    图片有噪点,把多通道都都开启,用于检查; 图片有噪点→先查看alpha,判断是有噪点还是边缘有锯齿→有→提升摄像机...

  • photoshop-雪花效果

    1、对背景图创建新图层,填充黑色 2、添加杂色:滤镜-杂色-添加杂色,数量50% 3、调整阈值:即在哪个临界值,会...

  • ps小技巧,制作下雪效果

    第一步:将图片拖入画布,然后复制一层新图层并利用油漆桶填充为黑色. 第二步:选择滤镜-杂色-添加杂色-调整数值. ...

  • 12-11插画

    解释说明文字 或者增强文字感染力杂色——图层样式 ——阴影——添加杂色滤镜——杂色——10%左右复制图层——在上...

  • 滤镜工具

    新建一个图层,滤镜,杂色,添加杂色。滤镜,扭曲,挤压,反复ctrl+F7挤压。

  • 动画练习

    练习一:雨景 新建图层(添加黑色) 1.滤镜-杂色--添加杂色 2.滤镜-模糊-动感模糊(图层混合样式改滤色) 3...

  • 6.3.1 实战:用纯色填充图层制作发黄旧照片

    1、选择滤镜,镜头校正命令 2、自定义,使晕影数量变暗、中点变亮 3、在滤镜中选择杂色命令(在图像中添加杂色),点...

  • python中网页验证码的生成

    一.基本流程: 1.首先创建图片对象2.创建画笔对象3.往图片中添加噪点4.生成验证码随机数5.绘制图片,完成后释...

网友评论

      本文标题:图片添加杂色噪点

      本文链接:https://www.haomeiwen.com/subject/rnfjqttx.html