直接贴代码吧
UIImage+Text.h
#import <UIKit/UIKit.h>
@interface UIImage (Text)
- (UIImage*)addText:(NSString*)text1
XPos:(int)xpos
YPos:(int)ypos
fontName:(NSString*)fontName
fontSize:(CGFloat)fontSize
fontColor:(UIColor*)fontColor;
@end
UIImage+Text.m
#import "UIImage+Text.h"
@implementation UIImage (Text)
- (UIImage*)addText:(NSString*)text1
XPos:(int)xpos
YPos:(int)ypos
fontName:(NSString*)fontName
fontSize:(CGFloat)fontSize
fontColor:(UIColor*)fontColor {
int w = self.size.width;
int h = self.size.height;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst);
CGContextDrawImage(context, CGRectMake(0, 0, w, h), self.CGImage);
CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 1);
char *txt = (char*)[text1 cStringUsingEncoding:NSUTF8StringEncoding];
char *font = (char*)[fontName cStringUsingEncoding:NSUTF8StringEncoding];
CGContextSelectFont(context, font, fontSize, kCGEncodingMacRoman);
CGContextSetTextDrawingMode(context, kCGTextFill);
CGContextSetFillColorWithColor(context, fontColor.CGColor);
CGContextShowTextAtPoint(context, xpos, ypos, txt, strlen(txt));
CGImageRef imageRef = CGBitmapContextCreateImage(context);
CGContextSetAllowsAntialiasing(context, YES);
UIImage *result = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
return result;
}
@end
调用举例
UIImage *img = [UIImage imageNamed:@"image.jpg"];
image.image = [img addText:text.text
XPos:80
YPos:300
fontName:@"Georgia-Bold"
fontSize:46.0
fontColor:[UIColor whiteColor]];