美文网首页程序员iOS Developer
iOS 生成一张带logo的可定义背景颜色/Size的图片

iOS 生成一张带logo的可定义背景颜色/Size的图片

作者: Zhui_Do | 来源:发表于2017-04-28 19:02 被阅读145次

    万恶的需求给了一张默认图,但是要求给所有的ImageView默认都给这张默认图,但是ImageView有很多,size又不同,如果给一张固定图片就会被拉变形,万恶的肯定不会同意你放一张变形图片,所以,想到的解决办法是:切一个小logo把他绘制在一张纯色的背景上,生成一张新图片(当然这里需要知道imageView的size这样才能保证生成正确大小的图片)。

    -(UIImage *)produceNewImageWithSmallImage:(UIImage *)image smallImageSize:(CGSize)smallImageSize withOutSize:(CGSize) outSize{
        //矩形路径
        UIBezierPath *outerPath = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, outSize.width, outSize.height)];
        UIGraphicsBeginImageContextWithOptions(outSize, NO, [UIScreen mainScreen].scale);
        CGContextRef context = UIGraphicsGetCurrentContext();
        CGContextSaveGState(context);{
        // 翻转context (画布)
        CGContextTranslateCTM(context, 0, outSize.height);
        CGContextScaleCTM(context, 1, -1);
        //画一个矩形并填充一个自定义颜色(与给的logo图背景颜色相同正好无缝衔接也可以切一个透明的)
        CGContextAddPath(context, outerPath.CGPath);
        CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
        CGContextDrawPath(context, kCGPathFill);
        CGContextStrokePath(context);
        //绘制图片在矩形中心位置
        CGContextDrawImage(context, CGRectMake((outSize.width-smallImageSize.width)/2, (outSize.height-smallImageSize.height)/2, 
    smallImageSize.width, smallImageSize.height), image.CGImage);
        }CGContextRestoreGState(context);
        UIImage *radiusImage  = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return radiusImage;
    }
    
    效果图.png

    如果你需要改变logo的尺寸可以使用下面的方法避免logo改变尺寸以后变形
    iOS图片指定Size压缩的正确方式http://www.jianshu.com/p/298ea48150e9

    相关文章

      网友评论

        本文标题:iOS 生成一张带logo的可定义背景颜色/Size的图片

        本文链接:https://www.haomeiwen.com/subject/zfsazttx.html