【问题标题】:How to merge one image in center of the other image in iOS?如何在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 我的代码有帮助吗??

标签: ios objective-c uiimageview


【解决方案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;
}

}

【讨论】:

    猜你喜欢
    • 2021-09-08
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 2011-05-21
    • 2013-07-18
    • 2019-04-22
    相关资源
    最近更新 更多