Как я могу написать некоторый текст со специальными символами в UIImage? - PullRequest
0 голосов
/ 23 августа 2011

Я хочу написать некоторый текст в UIImage, я нашел эту ссылку , и она работает, но если вы попытаетесь написать некоторые специальные символы, такие как «á, é, í, ö, ô. .. "тогда это терпит неудачу.

Код:

//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];
}

Есть идея решить эту проблему?

Спасибо.

EDIT:

Я пытался изменить:

char* text  = (char *)[text1 cStringUsingEncoding:NSASCIIStringEncoding];

до

char* text  = (char *)[text1 cStringUsingEncoding:NSUTF8StringEncoding];

но это не работает.

Ответы [ 2 ]

2 голосов
/ 24 августа 2011

Другой пользователь сказал мне, как это сделать:

-(UIImage *)writeText:(NSString *)text1 toImage:(UIImage *)img{

    CGSize sizeText = [text1 sizeWithFont:[UIFont fontWithName:@"Helvetica" size:36] minFontSize:36 actualFontSize:nil forWidth:783 lineBreakMode:UILineBreakModeTailTruncation];

    CGFloat posX = 1024.0 - 230.0 - sizeText.width;


    UIGraphicsBeginImageContextWithOptions(img.size, NO, 0.0f);
    [img drawAtPoint:CGPointMake(0.0f, 0.0f)];
    [text1 drawAtPoint:CGPointMake(posX, 588.0) withFont:[UIFont fontWithName:@"Helvetica" size:36]];
    UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return result;
} 

В этой ссылке

1 голос
/ 23 августа 2011

попробуйте использовать NSUTF8StringEncoding вместо NSASCIIStringEncoding

...