gpt4 book ai didi

ios - 在图像上渲染文本,以全分辨率保存图像?

转载 作者:行者123 更新时间:2023-11-28 22:31:22 26 4
gpt4 key购买 nike

我需要为图像添加文本标签,然后让用户能够保存带有文本的图像。问题是,我找不到有关如何执行此操作的任何有用信息。迹象表明使用了 UIKit 的 UIGraphicsBeginImageContextUIGraphicsGetImageFromCurrentImageContextUIGraphicsEndImageContext。我什至不确定这是否是正确的观察方向。我需要图像在保存时不按比例缩小。他们必须保留他们的决心。

我很迷茫。关于去哪里寻找或下一步尝试什么的任何建议或帮助都将非常有帮助。

最佳答案

这是一个创建 UIImage 的方法从一个 View (包括它的 subview )。假设图像在 UIImageView 中, 在 UILabel 中添加用户文本作为 UIImageView 的 subview .

+(UIImage *)imageFromView:(UIView *)view{

// On iOS 4 and later, use UIGraphicsBeginImageContextWithOptions to take the scale into consideration
// On iOS prior to 4, fall back to use UIGraphicsBeginImageContext

CGSize imageSize = view.bounds.size;
if (NULL != UIGraphicsBeginImageContextWithOptions)
UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0);
else
UIGraphicsBeginImageContext(imageSize);

CGContextRef context = UIGraphicsGetCurrentContext();

[view.layer renderInContext:context];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

return image;
}

目前它使用 View 的大小作为图像的大小。如果您希望它具有不同的大小,则可以传入所需大小的结果图像并设置 imageSize视情况而定。

您需要将 QuartzCore 基础添加到您的项目中并添加 #import <QuartzCore/QuartzCore.h>到您的 .m 文件。

这是 UIViewController 中的适用代码将生成的图像调整为源图像的大小,其中大部分在 saveButtonTapped 中方法:

- (void)viewDidLoad
{
[super viewDidLoad];
sourceImage = [UIImage imageNamed:@"animal"];
self.onScreenImageView.image = sourceImage;
}

-(void)viewWillAppear:(BOOL)animated{
NSLog(@"Source image size: %0.0f x %0.0f", sourceImage.size.width, sourceImage.size.height);
NSLog(@"onScreenImageView size: %0.0f x %0.0f", self.onScreenImageView.frame.size.width, self.onScreenImageView.frame.size.height);
}

- (IBAction)saveButtonTapped:(id)sender {

UIImageView *offScreenImageView = [[UIImageView alloc] initWithImage:sourceImage];
NSLog(@"offScreenImageView size: %0.0f x %0.0f", offScreenImageView.frame.size.width, offScreenImageView.frame.size.height);

UILabel *offScreenLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 1000, 100)];
offScreenLabel.font = [UIFont systemFontOfSize:80.f];
offScreenLabel.textColor = [UIColor blackColor];
offScreenLabel.text = @"User Image Label Text";
[offScreenImageView addSubview:offScreenLabel];

UIImage *labeledImage = [NAHLabelPictureVC imageFromView:offScreenImageView];
NSLog(@"Labeled image size: %0.0f x %0.0f", labeledImage.size.width, labeledImage.size.height);
self.labeledImageView.image = labeledImage;
}

NSLog 的输出小号:

2013-06-28 15:57:13.052 SOSandbox[28772:907] Source image size: 1213 x 1159
2013-06-28 15:57:13.055 SOSandbox[28772:907] onScreenImageView size: 200 x 200
2013-06-28 15:57:14.963 SOSandbox[28772:907] offScreenImageView size: 1213 x 1159
2013-06-28 15:57:14.992 SOSandbox[28772:907] Labeled image size: 1213 x 1159

关于ios - 在图像上渲染文本,以全分辨率保存图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17370116/

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