生成带文本的UIImage

来源:互联网 发布:带有企业域名的邮箱 编辑:程序博客网 时间:2024/06/09 08:54


-(UIImage *)createTextImg:(NSString *)imgName text:(NSString *)text1{        UIImage* img = [UIImage imageNamed:imgName];    NSAssert(img, @"");    int w = img.size.width;    int h = img.size.height;        float scale = img.scale;    w *= scale;    h *= scale;        // 画图    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();    CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst);    CGContextDrawImage(context, CGRectMake(0, 0, w, h), img.CGImage);        // 画文本    CTFontRef ctfont = CTFontCreateWithName(CFSTR("ArialMT"), 16 * scale, NULL);    CGColorRef ctColor = [[UIColor whiteColor] CGColor];        CFStringRef keys[] = { kCTFontAttributeName,kCTForegroundColorAttributeName };    CFTypeRef values[] = { ctfont,ctColor};    CFDictionaryRef attr = CFDictionaryCreate(NULL, (const void **)&keys, (const void **)&values,                                              sizeof(keys) / sizeof(keys[0]), &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);            CFStringRef ctStr = CFStringCreateWithCString(nil, [text1 UTF8String], kCFStringEncodingUTF8);    CFAttributedStringRef attrString = CFAttributedStringCreate(NULL,ctStr, attr);    CTLineRef line = CTLineCreateWithAttributedString(attrString);    CGContextSetTextMatrix(context, CGAffineTransformIdentity);    CGContextSetTextPosition(context, 4 * scale, 22 * scale);    CTLineDraw(line, context);        CFRelease(line);    CFRelease(attrString);    CFRelease(ctStr);        CGImageRef imageMasked = CGBitmapContextCreateImage(context);        CGContextRelease(context);    CGColorSpaceRelease(colorSpace);    UIImage *image =[UIImage imageWithCGImage:imageMasked scale:scale orientation:img.imageOrientation];    CFRelease(imageMasked);    return image;}


0 0
原创粉丝点击