合并 swift 中的两个图像
Merge two images in swift
我在带有自定义标记的地图视图中向用户展示。每个标记都将包含用户的图像,如下图所示:
可能有多个用户在地图上显示为标记。我通过 API 获取用户的数据和他们的图像。我从 API 收到的图像只是一个矩形图像。但我必须展示与上面显示的图像非常相似的图像。所以我想到了两个解决方案。
- 从 API 本身获取标记图像,可以轻松地在地图上显示为图像。
- 我有外椭圆作为图像。我可以在该椭圆中放置一个圆形图像并创建一个新图像。这可以进一步用作标记。但是为此,我必须合并两张照片。我能够合并它们。但是用户图像总是矩形的。我转不过来了。
任何人都可以帮助我提供更好的解决方案或完成我的解决方案吗?
第一个选项最简单。如果您选择第二个选项,那么这里有一些东西:
-(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;
我在带有自定义标记的地图视图中向用户展示。每个标记都将包含用户的图像,如下图所示:
可能有多个用户在地图上显示为标记。我通过 API 获取用户的数据和他们的图像。我从 API 收到的图像只是一个矩形图像。但我必须展示与上面显示的图像非常相似的图像。所以我想到了两个解决方案。
- 从 API 本身获取标记图像,可以轻松地在地图上显示为图像。
- 我有外椭圆作为图像。我可以在该椭圆中放置一个圆形图像并创建一个新图像。这可以进一步用作标记。但是为此,我必须合并两张照片。我能够合并它们。但是用户图像总是矩形的。我转不过来了。
任何人都可以帮助我提供更好的解决方案或完成我的解决方案吗?
第一个选项最简单。如果您选择第二个选项,那么这里有一些东西:
-(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;