zoukankan      html  css  js  c++  java
  • 添加水印

    1.加文字

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    - (UIImage *)imageWithLogoText:(UIImage *)img text:(NSString *)text1
    {    
        /////注:此为后来更改,用于显示中文。zyq,2013-5-8
        CGSize size = CGSizeMake(200, img.size.height);          //设置上下文(画布)大小
        UIGraphicsBeginImageContext(size);                       //创建一个基于位图的上下文(context),并将其设置为当前上下文
        CGContextRef contextRef = UIGraphicsGetCurrentContext(); //获取当前上下文
        CGContextTranslateCTM(contextRef, 0, img.size.height);   //画布的高度
        CGContextScaleCTM(contextRef, 1.0, -1.0);                //画布翻转
        CGContextDrawImage(contextRef, CGRectMake(0, 0, img.size.width, img.size.height), [img CGImage]);  //在上下文种画当前图片
         
        [[UIColor redColor] set];                                //上下文种的文字属性
        CGContextTranslateCTM(contextRef, 0, img.size.height);
        CGContextScaleCTM(contextRef, 1.0, -1.0);
        UIFont *font = [UIFont boldSystemFontOfSize:16];
        [text1 drawInRect:CGRectMake(0, 0, 200, 80) withFont:font];       //此处设置文字显示的位置
        UIImage *targetimg =UIGraphicsGetImageFromCurrentImageContext();  //从当前上下文种获取图片
        UIGraphicsEndImageContext();                            //移除栈顶的基于当前位图的图形上下文。
        return targetimg;
         
         
        //注:此为原来,不能显示中文。无用。
        //get image width and height
        int w = img.size.width;
        int h = img.size.height;
        CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
        //create a graphic context with CGBitmapContextCreate
        CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst);
        CGContextDrawImage(context, CGRectMake(0, 0, w, h), img.CGImage);
        CGContextSetRGBFillColor(context, 0.0, 1.0, 1.0, 1);
        char* text = (char *)[text1 cStringUsingEncoding:NSUnicodeStringEncoding];
        CGContextSelectFont(context, "Georgia", 30, kCGEncodingMacRoman);
        CGContextSetTextDrawingMode(context, kCGTextFill);
        CGContextSetRGBFillColor(context, 255, 0, 0, 1);
        CGContextShowTextAtPoint(context, w/2-strlen(text)*5, h/2, text, strlen(text));
        //Create image ref from the context
        CGImageRef imageMasked = CGBitmapContextCreateImage(context);
        CGContextRelease(context);
        CGColorSpaceRelease(colorSpace);
        return [UIImage imageWithCGImage:imageMasked];
     
    }


    2.新的添加文字水印的方法一

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #pragma mark -也是文字水印
    - (UIImage *) imageWithStringWaterMark:(NSString *)markString inRect:(CGRect)rect color:(UIColor *)color font:(UIFont *)font
    {
    #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 40000
        if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 4.0)
        {
            UIGraphicsBeginImageContextWithOptions([self size], NO, 0.0); // 0.0 for scale means "scale for device's main screen".
        }
    #else
        if ([[[UIDevice currentDevice] systemVersion] floatValue] < 4.0)
        {
            UIGraphicsBeginImageContext([self size]);
        }
    #endif
         
        //原图
        [self drawInRect:CGRectMake(0, 0, self.size.width, self.size.height)];
         
        //文字颜色
        [color set];
         
        //水印文字
        [markString drawInRect:rect withFont:font];
         
        UIImage *newPic = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
         
        return newPic;
    }


    3.还是添加文字水印方法二

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #pragma mark -还是文字水印
    - (UIImage *) imageWithStringWaterMark:(NSString *)markString atPoint:(CGPoint)point color:(UIColor *)color font:(UIFont *)font
    {
    #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 40000
        if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 4.0)
        {
            UIGraphicsBeginImageContextWithOptions([self size], NO, 0.0); // 0.0 for scale means "scale for device's main screen".
        }
    #else
        if ([[[UIDevice currentDevice] systemVersion] floatValue] < 4.0)
        {
            UIGraphicsBeginImageContext([self size]);
        }
    #endif
         
        //原图
        [self drawInRect:CGRectMake(0, 0, self.size.width, self.size.height)];
         
        //文字颜色
        [color set];
         
        //水印文字
        [markString drawAtPoint:point withFont:font];
         
        UIImage *newPic = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
         
        return newPic;
    }



    4.加图片

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #pragma mark - 加图片水印
    -(UIImage *)imageWithLogoImage:(UIImage *)img logo:(UIImage *)logo
    {
        //get image width and height
        int w = img.size.width;
        int h = img.size.height;
        int logoWidth = logo.size.width;
        int logoHeight = logo.size.height;
        CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
        //create a graphic context with CGBitmapContextCreate
        CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst);
        CGContextDrawImage(context, CGRectMake(0, 0, w, h), img.CGImage);
        CGContextDrawImage(context, CGRectMake(w-logoWidth, 0, logoWidth, logoHeight), [logo CGImage]);
        CGImageRef imageMasked = CGBitmapContextCreateImage(context);
        CGContextRelease(context);
        CGColorSpaceRelease(colorSpace);
        return [UIImage imageWithCGImage:imageMasked];
        //  CGContextDrawImage(contextRef, CGRectMake(100, 50, 200, 80), [smallImg CGImage]);
    }



    5.新的添加图片水印的方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    #pragma mark -还是图片水印
    - (UIImage *) imageWithWaterMask:(UIImage*)mask inRect:(CGRect)rect
    {
    #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 40000
        if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 4.0)
        {
            UIGraphicsBeginImageContextWithOptions([self size], NO, 0.0); // 0.0 for scale means "scale for device's main screen".
        }
    #else
        if ([[[UIDevice currentDevice] systemVersion] floatValue] < 4.0)
        {
            UIGraphicsBeginImageContext([self size]);
        }
    #endif
         
        //原图
        [self drawInRect:CGRectMake(0, 0, self.size.width, self.size.height)];
        //水印图
        [mask drawInRect:rect];
         
        UIImage *newPic = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
         
        return newPic;
    }


    6 .加半透明的水印

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //加半透明的水印
    -(UIImage *)imageWithTransImage:(UIImage *)useImage addtransparentImage:(UIImage *)transparentimg
    {
        UIGraphicsBeginImageContext(useImage.size);
        [useImage drawInRect:CGRectMake(0, 0, useImage.size.width, useImage.size.height)];
        [transparentimg drawInRect:CGRectMake(0, useImage.size.height-transparentimg.size.height, transparentimg.size.width, transparentimg.size.height) blendMode:kCGBlendModeOverlay alpha:0.4f];
         
        UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return resultingImage;
    }
  • 相关阅读:
    HUST 1372 marshmallow
    HUST 1371 Emergency relief
    CodeForces 629D Babaei and Birthday Cake
    CodeForces 629C Famil Door and Brackets
    ZOJ 3872 Beauty of Array
    ZOJ 3870 Team Formation
    HDU 5631 Rikka with Graph
    HDU 5630 Rikka with Chess
    CodeForces 626D Jerry's Protest
    【POJ 1964】 City Game
  • 原文地址:https://www.cnblogs.com/piaojin/p/5853361.html
Copyright © 2011-2022 走看看