RAMAN RANA
RAMAN RANA

Reputation: 1795

Can we create image of text

I want to create UIImage of text.Is there any tutorial of something which could help me.I read many blog but all the blogs showing that how to create text on uiimage but I need uimage of written text. If somebody have any idea about this , please help me.Thank you very much.

Upvotes: 0

Views: 340

Answers (2)

Arun
Arun

Reputation: 3404

hi you try this this.... i hope it will work for you

-(UIImage *)imageFromText:(NSString *)text withImage:(UIImage*)img{
   // set the font type and size
   UIFont *font = [UIFont systemFontOfSize:100.0];  
   CGSize size  = [text sizeWithFont:font];

   // check if UIGraphicsBeginImageContextWithOptions is available (iOS is 4.0+)
   if (UIGraphicsBeginImageContextWithOptions != NULL)
       UIGraphicsBeginImageContextWithOptions(size,NO,0.0);
   else
       // iOS is < 4.0 
       UIGraphicsBeginImageContext(size);

   // optional: add a shadow, to avoid clipping the shadow you should make the context size bigger 
   //
   CGContextRef ctx = UIGraphicsGetCurrentContext();
   CGContextSetShadowWithColor(ctx, CGSizeMake(0.0, 1.0), 5.0, [[UIColor blackColor] CGColor]);
   CGContextSetBlendMode(ctx,kCGBlendModeNormal);
//   CGContextSetFillColorWithColor(ctx, [UIColor whiteColor].CGColor);

    CGContextSetFillColorWithColor(ctx, [UIColor colorWithPatternImage:img].CGColor);


   /*NSLog(@"Rect  %@",CGContextGetClipBoundingBox(ctx));
    CGImageRef alphaMask = CGBitmapContextCreateImage(ctx);
    CGContextClipToMask(ctx, CGContextGetClipBoundingBox(ctx), alphaMask);*/


   // draw in context, you can use also drawInRect:withFont:
   [text drawAtPoint:CGPointMake(0.0, 0.0) withFont:font];

   // transfer image
   UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
   UIGraphicsEndImageContext();    

   return image;
}

the method call will be...

[self imageFromText:@"Booooooooom"];

Upvotes: 1

Sebastian Łuczak
Sebastian Łuczak

Reputation: 1116

Check this snippet of code, should work. You can freely change some of the parameters within function. Note that you must pass UIImage created somewhere else to this method.

//Add text to UIImage
-(UIImage *)addText:(UIImage *)img text:(NSString *)text1{
    int w = img.size.width;
    int h = img.size.height; 
    //lon = h - lon;
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst);

    CGContextDrawImage(context, CGRectMake(0, 0, w, h), img.CGImage);
    CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 1);

    char* text  = (char *)[text1 cStringUsingEncoding:NSASCIIStringEncoding];// "05/05/09";
    CGContextSelectFont(context, "Arial", 18, kCGEncodingMacRoman);
    CGContextSetTextDrawingMode(context, kCGTextFill);
    CGContextSetRGBFillColor(context, 255, 255, 255, 1);


    //rotate text
    CGContextSetTextMatrix(context, CGAffineTransformMakeRotation( -M_PI/4 ));

    CGContextShowTextAtPoint(context, 4, 52, text, strlen(text));


    CGImageRef imageMasked = CGBitmapContextCreateImage(context);
    CGContextRelease(context);
    CGColorSpaceRelease(colorSpace);

    return [UIImage imageWithCGImage:imageMasked];
}

Upvotes: 0

Related Questions