iOS在图片上添加文字 图片

3,555 阅读1分钟

图片上添加文字,在网上找的都是iOS10弃用的一个方法(怕以后麻烦就找了另一种方法替代)弃用链接

简洁版

- (UIImage*)text:(NSString*)text addToImage:(UIImage*)image{

    //绘制图片上下文

    UIGraphicsBeginImageContext(image.size);

    [image drawInRect:CGRectMake(0,0, image.size.width, image.size.height)];

    //字体绘制到图片的位置和字体属性

    [text drawInRect:CGRectMake(100,100,100,50)withAttributes:nil];

    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return newImage;

}

完整版

//将文字添加到图片上

- (UIImage*)text:(NSString*)text addToView:(UIImage*)image{
    
    //设置字体样式
    
    UIFont *font = [UIFont fontWithName:@"Arial-BoldItalicMT"size:32];
    
    NSDictionary *dict = @{NSFontAttributeName:font,NSForegroundColorAttributeName:[UIColor redColor]};
    
    CGSize textSize = [text sizeWithAttributes:dict];
    
    //绘制上下文
    
    UIGraphicsBeginImageContext(image.size);
    
    [image drawInRect:CGRectMake(0,0, image.size.width, image.size.height)];
    
    int border =10;
    
    CGRect re = {CGPointMake(image.size.width - textSize.width- border, image.size.height- textSize.height- border), textSize};
    
    //此方法必须写在上下文才生效
    
    [text drawInRect:re withAttributes:dict];
    
    UIImage *newImage =UIGraphicsGetImageFromCurrentImageContext();
    
    UIGraphicsEndImageContext();
    
    return newImage;
    
}

图片上添加图片,用于给图片添加水印

- (UIImage*)image:(UIImage*)image addToImage:(UIImage*)bigImage{

    CGFloat w = bigImage.size.width;

    CGFloat h = bigImage.size.height;

    //bitmap上下文使用的颜色空间

    CGColorSpaceRef colorSpace =CGColorSpaceCreateDeviceRGB();

    //绘制图形上下文

    CGContextRef ref = CGBitmapContextCreate(NULL, w, h,8,444* bigImage.size.width, colorSpace,kCGImageAlphaPremultipliedFirst);

    //给bigImage画图

    CGContextDrawImage(ref,CGRectMake(0,0, w, h), bigImage.CGImage);

    CGContextDrawImage(ref,CGRectMake(w -100,100, image.size.width, image.size.height), image.CGImage);

    //合成图片

    CGImageRef imageMasked = CGBitmapContextCreateImage(ref);

    //关闭图形上下文

    CGContextClosePath(ref);

    CGColorSpaceRelease(colorSpace);

    return [UIImage imageWithCGImage:imageMasked];

}

图片上添加View/截屏生成图片

- (UIImage*)convertImageFromeView:(UIView*)view{
    
    NSLog(@"%f", [UIScreen mainScreen].scale);
    
    //不加scale图片截屏会模糊
    
    UIGraphicsBeginImageContextWithOptions(view.frame.size,NO, [UIScreen mainScreen].scale);
    
    //绘制图形上下文
    
    CGContextRef ref = UIGraphicsGetCurrentContext();
    
    [view.layer renderInContext:ref];
    
    UIImage*image =UIGraphicsGetImageFromCurrentImageContext();
    
    //获取固定位置的图片(上面部分完成截屏功能,下面代码可不要)
    
    CGImageRef imageRef = CGImageCreateWithImageInRect(image.CGImage,CGRectMake(200,300,100,100));
    
    UIImage*img = [UIImage imageWithCGImage:imageRef];
    
    UIGraphicsEndImageContext();
    
    UIImageWriteToSavedPhotosAlbum(img,self,nil,nil);
    
    return img;
    
}