在另一个 UIImage 之上添加 UIImage

Posted

技术标签:

【中文标题】在另一个 UIImage 之上添加 UIImage【英文标题】:Add UIImage on top of another UIImage 【发布时间】:2012-05-09 19:50:39 【问题描述】:

我有两张图片:第一张是用户个人图片,第二张是图标(徽章)。

我想在第一个 uiimage(用户的图像)的左下角添加第二个 uiimage(图标)并将它们保存到一个新的 Uiimage 中。

谢谢

【问题讨论】:

【参考方案1】:

试试这个方法:

-(UIImage *)drawImage:(UIImage*)profileImage withBadge:(UIImage *)badge

    UIGraphicsBeginImageContextWithOptions(profileImage.size, NO, 0.0f);
    [profileImage drawInRect:CGRectMake(0, 0, profileImage.size.width, profileImage.size.height)];
    [badge drawInRect:CGRectMake(0, profileImage.size.height - badge.size.height, badge.size.width, badge.size.height)];
     UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
     UIGraphicsEndImageContext();
     return resultImage;

您可以通过以下方式使用它:

UIImage *myBadgedImage = [self drawImage:profileImage withBadge:badgeImage];

【讨论】:

知道为什么代码会采用某些 UIImage 并放大它们 - 本质上会丢失实际大小吗?此代码对我们不起作用,因为我们的图像正在放大 - 即使我们只传递没有徽章的个人资料图像。 拯救了我的一天。我希望我不必恢复到这一点,将 UIImageViews 堆叠在一起而不是使用这个帮助器 @AntonTropashko badge.size.height 因不同图像而异,即徽章图像调整大小。我们可以让它适合任何 profileImage 尺寸(比如 100 高度)吗?谢谢!【参考方案2】:

试试这个:

CGFloat scale = [self currentScale];
if (scale > 1.5)
    UIGraphicsBeginImageContextWithOptions(view.frame.size, NO, scale);
else
    UIGraphicsBeginImageContext(view.frame.size);

[image1 drawInRect:CGRectMake(0, 0, w1, h1)];
[image2 drawInRect:CGRectMake(0, 0, w2, h2)];

UIImage* screenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

【讨论】:

以上是关于在另一个 UIImage 之上添加 UIImage的主要内容,如果未能解决你的问题,请参考以下文章

试图将 UIView 放在 UIImageView 之上以突出显示 UIImage 的一部分

Swift 3 ios:当图像出现时,UILabel 需要出现在 UIImage 之上

在另一个以编程方式创建的视图下方布局视图

-[UIImage drawInRect:] / CGContextDrawImage() 不释放内存?

使用 UIView 框架裁剪 UIImage

UIImage 在标签上加载