下载图片 添加 水印 icon

//

//  UIImage+WaterMark.m

//  WatermarkDemo

//

//  Created by sixiang on 13-3-13.

//  Copyright (c) 2013 enmoli. All rights reserved.

//


#import "UIImage+WaterMark.h"


#define WATER_MARK_SCALE_FACTOR 0.2f

#define WATER_MARK_MARGIN_DEFAULT   20.0f


@implementation UIImage (WaterMark)

-(UIImage *)addMaskWithImage:(UIImage *)mask

{

    return [self addMaskWithImage:mask scaled:YES margined:YES];

}

-(UIImage *)addMaskWithImage:(UIImage *)mask scaled:(BOOL)isScaled

{

    return [self addMaskWithImage:mask scaled:isScaled margined:NO];

}

-(UIImage *)addMaskWithImage:(UIImage *)mask scaled:(BOOL)isScaled margined:(BOOL)isMargined

{

    //get image width and height

    CGFloat w = self.size.width;

    CGFloat h = self.size.height;

    CGFloat logoWidth = mask.size.width;

    CGFloat logoHeight = mask.size.height;

    CGFloat waterMarkRatio = logoWidth / logoHeight;

    if (isScaled) {

        logoWidth = w * WATER_MARK_SCALE_FACTOR;

        logoHeight = h * WATER_MARK_SCALE_FACTOR;

        

        CGFloat ratio = logoWidth / logoHeight;

        if (ratio > waterMarkRatio) {

            logoWidth = logoHeight * waterMarkRatio;

        } else if (ratio < waterMarkRatio) {

            logoHeight = logoWidth / waterMarkRatio;

        }

        

    }

    

    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), self.CGImage);


    CGFloat waterMarkStartX = (w - logoWidth);

    CGFloat waterMarkStartY = 0;

    if (isMargined) {

        waterMarkStartX = (w - logoWidth - WATER_MARK_MARGIN_DEFAULT) > 0 ?

                            (w - logoWidth - WATER_MARK_MARGIN_DEFAULT) :

                            (w - logoWidth);

        waterMarkStartY = (h > WATER_MARK_MARGIN_DEFAULT) ?

                            WATER_MARK_MARGIN_DEFAULT : 0;

    }

    

    CGContextDrawImage(context, CGRectMake(waterMarkStartX, waterMarkStartY,

                                           logoWidth, logoHeight), [mask CGImage]);

    CGImageRef imageMasked = CGBitmapContextCreateImage(context);

    CGContextRelease(context);

    CGColorSpaceRelease(colorSpace);

    return [UIImage imageWithCGImage:imageMasked];

}


@end


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值