- (UIImage *)imageWithLogoText:(UIImage *)img text:( NSString *)text1 { /注:此为后来更改,用于显示中文。zyq,2013-5-8 CGSize size = CGSizeMake(200, 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]); //在上下文种画当前图片 [[UIColor redColor] set]; //上下文种的文字属性 CGContextTranslateCTM(contextRef, 0, img.size.height); CGContextScaleCTM(contextRef, 1.0, -1.0); UIFont *font = [UIFont boldSystemFontOfSize:16]; [text1 drawInRect:CGRectMake(0, 0, 200, 80) withFont:font]; //此处设置文字显示的位置 UIImage *targetimg =UIGraphicsGetImageFromCurrentImageContext(); //从当前上下文种获取图片 UIGraphicsEndImageContext(); //移除栈顶的基于当前位图的图形上下文。 return targetimg; //注:此为原来,不能显示中文。无用。 //get image width and height int w = img.size.width; int h = img.size.height; 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), img.CGImage); CGContextSetRGBFillColor(context, 0.0, 1.0, 1.0, 1); char * text = ( char *)[text1 cStringUsingEncoding: NSUnicodeStringEncoding ]; CGContextSelectFont(context, "Georgia" , 30, kCGEncodingMacRoman); CGContextSetTextDrawingMode(context, kCGTextFill); CGContextSetRGBFillColor(context, 255, 0, 0, 1); CGContextShowTextAtPoint(context, w/2-strlen(text)*5, h/2, text, strlen(text)); //Create image ref from the context CGImageRef imageMasked = CGBitmapContextCreateImage(context); CGContextRelease(context); CGColorSpaceRelease(colorSpace); return [UIImage imageWithCGImage:imageMasked]; } |