【问题标题】:How to position an object over an image and store it如何在图像上定位对象并存储它
【发布时间】:2013-09-11 15:31:29
【问题描述】:

我正在创建一个“cartoonizer”应用程序,它将图像作为输入并对其进行修改,以便将其格式化为漫画风格。

目前,原始图像存储在UIImageView中,我可以通过以下方式访问它:

imageView.image

我想知道是否可以在图像imageView.image 上放置一个对象(如气球),然后将图像与该对象一起存储在其上,就像它最初是图像内容的一部分一样。

提前谢谢你。

【问题讨论】:

    标签: iphone ios image-processing ios6 uiimageview


    【解决方案1】:

    假设您在顶部图像中具有正确的不透明度,您可以这样做。

    就像你说的,你从 imageView.image 获取你的图像:

    从这里:blend two uiimages based on alpha/transparency of top image

    UIImage *bottomImage = [UIImage imageNamed:@"bottom.png"];
    UIImage *image = [UIImage imageNamed:@"top.png"];
    
    CGSize newSize = CGSizeMake(width, height);
    UIGraphicsBeginImageContext( newSize );
    
    // Use existing opacity as is
    [bottomImage drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
    // Apply supplied opacity
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height) blendMode:kCGBlendModeNormal alpha:0.8];
    
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    
    UIGraphicsEndImageContext();
    

    更多合成技术在这里:http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-advanced-uiimage-techniques/

    【讨论】:

    • 如果我想保持它可点击怎么办?就像我想让用户在图像周围移动它一样,调整它的大小......
    • 然后你需要继承 UIImageView 并覆盖 touchesbegan/moved/ended。如果您想保持可点击,那么您不希望合成(将图像嵌入在一起以创建一个新图像),这正是我认为您要问的。
    • 嵌入是最后一步:当有人按下“保存”以保存漫画时,您将图像混合在一起(因此,对于这一部分,您的解决方案很好)。但是,由用户决定将气球放置在哪里以及它必须有多大。因此,至少在第一个交互步骤中,顶部图像应该是可点击的。
    • 没关系,在这种情况下使用子类 UIImageViews 来定位图像,当您决定混合拉出两个 UIImageview 图像时,将它们存储在两个 UIImages 中并使用我的解决方案。
    猜你喜欢
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    • 2020-01-15
    • 2023-03-31
    相关资源
    最近更新 更多