gpt4 book ai didi

iphone - 如何在 iphone 应用程序开发中添加两个 uiimageview 并将其保存到 iphone 照片库?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:19:52 25 4
gpt4 key购买 nike

我开门见山,我的问题是,我有一个 uiview Controller ,它有 3 个按钮和一个 uiimage View 。现在,

  1. 当我按下第一个按钮时,我从 iphone 默认照片库中获取图像并放置在 uiimageview 上。

  2. 当我按下第二个按钮时,它会从照片库中拍摄另一张图片并放置在上一张图片上。

  3. 现在当我按下第三个按钮时,这两张图片将添加并成为一张图片并保存在相册中。

我已经完成了第 1 步和第 2 步,但我如何才能完成第 3 步??

编辑

假设图片 (image1) 中有一个没有 mustache 的男人,但我正在添加另一个 mustache 图像 (image2) 来制作一张他看起来像 mustache 男人 (image3) 的图像。我想将图像 3 保存在相册中。

提前感谢您的帮助..

最佳答案

我自己也有同样的问题,我以前是这样解决的

试试这个类别代码....

.h文件:

#import <UIKit/UIKit.h>

@interface UIImage (MyImage)


+ (UIImage*)imageFromView:(UIView*)view;
+ (UIImage*)imageFromView:(UIView*)view scaledToSize:(CGSize)newSize;
+ (UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize;
+ (void)beginImageContextWithSize:(CGSize)size;
+ (UIImage *)croppedImage:(UIImage *)myImage :(CGRect)bounds;

//masking the image ....

+ (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage;

@end

.m 文件:

#import "UIImage+MyImage.h"

@implementation UIImage (MyImage)

+ (void)beginImageContextWithSize:(CGSize)size
{
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
if ([[UIScreen mainScreen] scale] == 2.0) {
UIGraphicsBeginImageContextWithOptions(size, YES, 2.0);
} else {
UIGraphicsBeginImageContext(size);
}
} else {
UIGraphicsBeginImageContext(size);
}
}

+ (void)endImageContext
{
UIGraphicsEndImageContext();
}

+ (UIImage*)imageFromView:(UIView*)view
{
[self beginImageContextWithSize:[view bounds].size];
BOOL hidden = [view isHidden];
[view setHidden:NO];
[[view layer] renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
[self endImageContext];
[view setHidden:hidden];
return image;
}

+ (UIImage*)imageFromView:(UIView*)view scaledToSize:(CGSize)newSize
{
UIImage *image = [self imageFromView:view];
if ([view bounds].size.width != newSize.width ||
[view bounds].size.height != newSize.height) {
image = [self imageWithImage:image scaledToSize:newSize];
}
return image;
}

+ (UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize
{
[self beginImageContextWithSize:newSize];
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
[self endImageContext];
return newImage;
}


+ (UIImage *)croppedImage:(UIImage *)myImage :(CGRect)bounds {
CGImageRef imageRef = CGImageCreateWithImageInRect(myImage.CGImage, bounds);
UIImage *croppedImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
CGSize asd = croppedImage.size;
return croppedImage;
}




+ (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {

CGImageRef maskRef = maskImage.CGImage;

CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
CGImageGetHeight(maskRef),
CGImageGetBitsPerComponent(maskRef),
CGImageGetBitsPerPixel(maskRef),
CGImageGetBytesPerRow(maskRef),
CGImageGetDataProvider(maskRef), NULL, false);

CGImageRef masked = CGImageCreateWithMask([image CGImage], mask);

CGImageRelease(mask);
CGImageRelease(maskRef);
return [UIImage imageWithCGImage:masked];

}



@end

我的设计将是包含两个 ImageView 的 View (命名为 combinedView),一个只是源图像 [即没有 mustache 的男人] 在该图像的顶部我有 mustache 图像......

然后我用这种方式制作图像......

UIImage *myMaskedImage=[UIImage imageFromView:combinedView ];

要将此保存到相册,请使用此...

 UIImageWriteToSavedPhotosAlbum(myMaskedImage, self, nil, nil);

试试这个想法....

新更新: 您需要维护此结构以及 theView 的背景颜色为清晰的颜色

              +theView ---
|
->imageview1(person)
|
->imageView2(beard alone)

关于iphone - 如何在 iphone 应用程序开发中添加两个 uiimageview 并将其保存到 iphone 照片库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12453913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com