合并 swift 中的两个图像

Merge two images in swift

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

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

  1. 从 API 本身获取标记图像,可以轻松地在地图上显示为图像。
  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 作为标记图标即可。

这不会完全回答你的问题,但要使 imageView 更圆润,请使用此代码(此代码在 objective C 中,"profilePic" 是 UIImageView 的示例):

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