给图片添加字体或logo小图片(可设置透明度)



    if(!image)

    {

//        image = [UIImage imageNamed:@"loadingYDBig.jpg"];

        image = [UIImage imageNamed:@"vs_sdimage"];

        image = [self addText:image text:@"视图正在加载中。。。" numText:[NSString stringWithFormat:@"%d",pageIndex + 1]];

        [imageView.mp_imageView setImage:image];

        self.isImageSc = NO;

        self.isImageLoad = NO;

    }

    else

    {

        //无水印添加水印

        if (MD.isWebp == NO) {

            image = [self addImageLogo:image text:[UIImage imageNamed:@"logo"]];

//            image = [self addImage:image addMsakImage:[UIImage imageNamed:@"logo"]];

        }

        

        [imageView.mp_imageView setImage:image];

        self.isImageLoad = YES;

        self.isImageSc = YES;

    }




/**

 加图片水印

 @param img 需要加logo图片的图片

 @param logo logo图片

 @returns 加好logo的图片

 */

-(UIImage *)addImageLogo:(UIImage *)img text:(UIImage *)logo

{

    //get image width and height

    int w = img.size.width;

    int h = img.size.height;

    int logoWidth = logo.size.width * 0.15;

    int logoHeight = logo.size.height * 0.15;

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

    //create a graphic context with CGBitmapContextCreate

    CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst);

    //开始画图

    [logo drawInRect:CGRectMake(w-logoWidth - 50, 80, logoWidth, logoHeight) blendMode:kCGBlendModeOverlay alpha:0.73f];//0.73透明度

    CGContextDrawImage(context, CGRectMake(0, 0, w, h), img.CGImage);

    //-50x,80y)位置

    CGContextDrawImage(context, CGRectMake(w-logoWidth - 50, 80, logoWidth, logoHeight), [logo CGImage]);

    //画图完毕 拿到CGImage类型的image

    CGImageRef imageMasked = CGBitmapContextCreateImage(context);

    //释放画图空间等

    CGContextRelease(context);

    CGColorSpaceRelease(colorSpace);

    return [UIImage imageWithCGImage:imageMasked];

    //  CGContextDrawImage(contextRef, CGRectMake(100, 50, 200, 80), [smallImg CGImage]);

}


//[transparentimg drawInRect:CGRectMake(0, useImage.size.height-transparentimg.size.height, transparentimg.size.width, transparentimg.size.height) blendMode:kCGBlendModeOverlay alpha:0.4f];


/**

 加半透明水印

 @param useImage 需要加水印的图片

 @param addImage1 水印

 @returns 加好水印的图片

 */

- (UIImage *)addImage:(UIImage *)useImage addMsakImage:(UIImage *)maskImage

{

    UIGraphicsBeginImageContext(useImage.size);

    [useImage drawInRect:CGRectMake(0, 0, useImage.size.width, useImage.size.height)];

    //    [addImage1 drawInRect:CGRectMake(0, useImage.size.height-addImage1.size.height, addImage1.size.width, addImage1.size.height)];

    //四个参数为水印图片的位置

    [maskImage drawInRect:CGRectMake(useImage.size.width - 110, useImage.size.height-25, 100, 25)];

    UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return resultingImage;

}



/**

 加文字随意

 @param img 需要加文字的图片

 @param text1  text2 文字描述

 @returns 加好文字的图片

 */

-(UIImage *)addText:(UIImage *)img text:(NSString *)text1 numText:(NSString *)text2

{

    /注:此为后来更改,用于显示中文。

    CGSize size = CGSizeMake(img.size.width, 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]);  //在上下文种画当前图片

    

    [RGB(69, 68, 68) set];                                //上下文种的文字属性

    CGContextTranslateCTM(contextRef, 0, img.size.height);

    CGContextScaleCTM(contextRef, 1.0, -1.0);

    UIFont *font = [UIFont boldSystemFontOfSize:30];

    //    [text1 drawInRect:CGRectMake(img.size.width/2 - 150 , img.size.height/2 + 50, 300, 80) withFont:font];       //此处设置文字显示的位置

    [text1 drawInRect:CGRectMake(img.size.width/2 - 150 , img.size.height/2 + 50, 300, 100) withFont:font lineBreakMode:NSLineBreakByWordWrapping alignment:NSTextAlignmentCenter];

    UIFont *font2 = [UIFont systemFontOfSize:150];

    [text2 drawInRect:CGRectMake(img.size.width/2 - 150, img.size.height/2 - 150, 300, 300) withFont:font2 lineBreakMode:NSLineBreakByWordWrapping alignment:NSTextAlignmentCenter];

    UIImage *targetimg =UIGraphicsGetImageFromCurrentImageContext();  //从当前上下文种获取图片

    UIGraphicsEndImageContext();                            //移除栈顶的基于当前位图的图形上下文。

    return targetimg;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值