#define HORIZONTAL_SPACE 30//水平間距
#define VERTICAL_SPACE ?8//豎直間距
#define CG_TRANSFORM_ROTATION ? (-M_PI_2 /2)//旋轉角度
/**
?*? 照片加水印
?*
*?@param?img? 需要加水印的照片
*?@param?markText 需要加上去的文字
?*
*?@return?加好文字的照片
?*/
-(UIImage*) watermarkImage:(UIImage*)img ?withName:(NSString*) markText
{
?int?w = img.size.width;
?int?h = img.size.height;
? ? UIGraphicsBeginImageContext(img.size);
? ? CGFloat sqrtLength =sqrt(w*w + h*h);
? ? [img drawInRect:CGRectMake(0,0, w, h)];
? ? NSDictionary ?*attr = @{NSFontAttributeName: [UIFont ? ?boldSystemFontOfSize:20],? //設置字體
?? ? ? ? ? ? ? ? ? ? ? ? ? NSForegroundColorAttributeName : [UIColor colorWithRed:0.2 green:0.2 blue:0.2 alpha:0.15]? //設置字體顏色
?? ? ? ? ? ? ? ? ? ? ? ? ? };
? ? NSMutableAttributedString ?*attrStr = [[NSMutableAttributedString alloc] initWithString:markText ?attributes:attr];
? ? CGFloat ?strWidth = attrStr.size.width;
? ? CGFloat ?strHeight = attrStr.size.height;
? ? //開始旋轉上下文矩陣族檬,繪制水印文字
? ? CGContextRef ?context = UIGraphicsGetCurrentContext();
? ? //將繪制原點(0,0)調整到原image的中心
? ? CGContextConcatCTM(context, CGAffineTransformMakeTranslation(w/2, h/2));
? ? //以繪制原點為中心旋轉
? ? CGContextConcatCTM(context, CGAffineTransformMakeRotation(CG_TRANSFORM_ROTATION));
? ? //將繪制原點恢復初始值,保證當前context中心和源image的中心處在一個點(當前context已經旋轉框全,所以繪制出的任何layer都是傾斜的)
? ? CGContextConcatCTM(context, CGAffineTransformMakeTranslation(-w/2, -h/2));
? ? //? ? ? ? 計算需要繪制的列數和行數
?int ?horCount = sqrtLength / (strWidth +HORIZONTAL_SPACE) +1;
?int ?verCount = sqrtLength / (strHeight +VERTICAL_SPACE) +1;
? ? //? ? ? ? 此處計算出需要繪制水印文字的起始點,由于水印區(qū)域要大于圖片區(qū)域所以起點在原有基礎上移
? ? CGFloat ?orignX = -(sqrtLength-w)/2;
? ? CGFloat ?orignY = -(sqrtLength-h)/2;
? ? CGFloat ?tempOrignX = orignX;
? ? //在每行繪制時Y坐標疊加
? ? CGFloat ?tempOrignY = orignY;
?for(inti =0; i < horCount * verCount; i++) {
? ? ? ? [markText ?drawInRect:CGRectMake(tempOrignX, tempOrignY, strWidth, strHeight) ?withAttributes:attr];
?if(i % horCount ==0 && ?i !=0) {
? ? ? ? ? ? tempOrignX = orignX;
? ? ? ? ? ? tempOrignY += (strHeight +VERTICAL_SPACE);
}else{
? ? ? ? ? ? tempOrignX += (strWidth +HORIZONTAL_SPACE);
? ? ? ? }
? ? }
? ? //根據上下文制作成圖片
? ? UIImage ?*finalImg = UIGraphicsGetImageFromCurrentImageContext();
? ? UIGraphicsEndImageContext();
?return ?finalImg;
}