【问题标题】:How can I write some text with special characters in a UIImage?如何在 UIImage 中写一些带有特殊字符的文本?
【发布时间】:2011-08-23 11:16:48
【问题描述】:

我想在 UIImage 中写一些文本,我找到了这个 link 并且它有效,但是如果你尝试写一些特殊字符,例如“á、é、í、ö、ô...”,那么它失败了。

代码:

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

有什么办法可以解决这个问题吗?

谢谢。

编辑:

我尝试过改变:

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

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

但它不起作用。

【问题讨论】:

    标签: iphone ios text uiimage core-graphics


    【解决方案1】:

    另一个用户告诉我怎么做:

    -(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;
    } 
    

    在这个link

    【讨论】:

      【解决方案2】:

      尝试使用 NSUTF8StringEncoding 而不是 NSASCIIStringEncoding

      【讨论】:

      • 我之前已经尝试过了,但这不是问题,我认为问题在于:CGContextSelectFont(context, "Arial", 18, kCGEncodingMacRoman);但我不知道如何解决。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 2013-04-15
      • 2020-12-11
      • 2018-09-29
      相关资源
      最近更新 更多