如何在iOS中将一张图像合并到另一张图像的中心?

Posted

技术标签:

【中文标题】如何在iOS中将一张图像合并到另一张图像的中心?【英文标题】:How to merge one image in center of the other image in iOS? 【发布时间】:2015-10-28 13:18:19 【问题描述】:

我有一个图像是视频的缩略图。我想在该缩略图图像的中心添加播放图像,以便我可以识别它是一个视频。请告诉我该怎么做。我正在使用下面的代码合并图像,但这对我不起作用。

- (UIImage *) getMergeImage:(UIImage *)parentImage childImage:(UIImage *)childImage

    UIImage *bottomImage =  parentImage;//background image
    UIImage *image       =  childImage;//foreground image

    CGSize newSize = CGSizeMake(bottomImage.size.width, bottomImage.size.height);
    UIGraphicsBeginImageContext(newSize);

    // Use existing opacity as is
    [bottomImage drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];

    // Apply supplied opacity if applicable
    // Change xPos, yPos if applicable
    [image drawInRect:CGRectMake(18,18,36,36) blendMode:kCGBlendModeNormal alpha:1.0];

    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return newImage;

【问题讨论】:

你想把子图像放在父图像的中心吗? 是的。这正是我想要的 这里 x & y 是 18,18 我怎样才能使它成为图像的中心。 @deepakkumar 我的代码有帮助吗?? 【参考方案1】:

如果你不想使用两个 ImageViews

- (UIImage *) getMergeImage:(UIImage *)parentImage childImage:(UIImage *)childImage

CGSize size = CGSizeMake(parentImage.size.width, parentImage.size.height);

UIGraphicsBeginImageContext(size);

[image1 drawInRect:CGRectMake(0,0,size.width, size.height)];
[image2 drawInRect:CGRectMake( ((size.width - childImage.size.width) / 2 ),((size.height - childImage.size.height) / 2 ),image2.size.width, image2.size.height)];

UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return finalImage;

【讨论】:

image1image2 变量的意义何在?它实际上使该方法的其余部分不清楚。坚持原来的 parentImagechildImage 变量。 更新了代码以使用 parentImage 和 childImage 代替 image1 和 image2。 图1和图2?【参考方案2】:

我修复了 image1 和 image2 并添加了 autoreleasepool 以避免内存问题:

- (UIImage *)getMergeImage:(UIImage *)parentImage childImage:(UIImage *)childImage
@autoreleasepool 
    CGSize size = CGSizeMake(parentImage.size.width, parentImage.size.height);
    
    UIGraphicsBeginImageContext(size);
    
    [parentImage drawInRect:CGRectMake(0,0,size.width, size.height)];
    [childImage drawInRect:CGRectMake( ((size.width - childImage.size.width) / 2 ),((size.height - childImage.size.height) / 2 ),childImage.size.width, childImage.size.height)];
    
    UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext();
    
    UIGraphicsEndImageContext();
    
    return finalImage;

【讨论】:

以上是关于如何在iOS中将一张图像合并到另一张图像的中心?的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中将一个图像添加到另一个图像的底部

如何使一张图像居中于另一张图像

ImageMagick:将一张图像的 4 个边缘并排合成到另一张图像中

如何在 Apollo 中将一张表关联到另一张表

通过第三个将一个位图合并到另一个

是否可以在特定空间中将图像插入其他图像?