在swift中合并两个图像

时间:2016-05-05 04:45:40

标签: ios swift core-graphics

我在带有自定义标记的地图视图中显示用户。每个标记都将包含用户的图像,如下图所示:enter image description here

地图上可能有多个用户显示为标记。我通过API获取用户及其图像的数据。我从API收到的图像只是一个矩形图像。但我必须证明该图像与上面显示的图像非常相似。所以我想到了两个解决方案。

  1. 从API本身获取可以在地图上轻松显示为图像的标记图像。
  2. 我将外椭圆作为图像。我可以在该椭圆中放置一个圆形图像并创建一个新图像。这可以进一步用作标记。但为此,我将合并两张照片。我能够合并它们。但用户图像始终是矩形。我无法绕过它。
  3. 任何人都可以帮我找到更好的解决方案,或者只是完成我的解决方案吗?

2 个答案:

答案 0 :(得分:2)

第一个选项将是最简单的。如果您使用第二个选项,那么这里有一些东西:

-(UIImage *)makeRoundedImage:(UIImage *) image 
                  radius: (float) radius {

  CALayer *imageLayer = [CALayer layer];
  imageLayer.backgroundColor = [UIColor whiteColor].CGColor;
  imageLayer.frame = CGRectMake(0, 0, image.size.width, image.size.height);
  imageLayer.contents = (id) image.CGImage;
  imageLayer.masksToBounds = YES;
  imageLayer.cornerRadius = radius;
  UIGraphicsBeginImageContext(image.size);
  [imageLayer renderInContext:UIGraphicsGetCurrentContext()];
  UIImage *roundedImage = UIGraphicsGetImageFromCurrentImageContext();
  UIGraphicsEndImageContext();

  return roundedImage;
}

这将创建一个白色背景的圆形UIImage。只需使用生成的UIImage作为标记图标。

答案 1 :(得分:-1)

这完全没有回答你的问题,但是对于imageView使用此代码(此代码在目标C中," profilePic"是一个示例UIImageView):

    profilePic.layer.cornerRadius = profilePic.frame.size.width / 2;