当前位置: 首页 > 知识库问答 >
问题:

将UITextView转换为图像

连正信
2023-03-14

我有一个UIExtView和一个UIImageView,我想把它们转换成一个单独的图像来共享。

SaveImageView是ImageView,我想在这里保存textview的图像。

Textview可以在屏幕上移动它,所以我决定保存它们的最终位置,并将其交给SaveImageView。

首先转换图像中的UItext View并保存他的位置。

然后,我想加入两个Imageview,成一个单一的图像。

self.SaveTextView.frame = self.textView.frame;


UIGraphicsBeginImageContext (self.textView.bounds.size);

[self.textView.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();


self.SaveTextView.image=resultingImage;

//连接两个uiimageview

UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 0.0);

[self.BaseImageView.image drawInRect:CGRectMake(0, 0, self.BaseImageView.frame.size.width, self.BaseImageView.frame.size.height)];

[self.SaveTextView.image drawInRect:CGRectMake(self.SaveTextView.frame.origin.x, self.SaveTextView.frame.origin.y, self.SaveTextView.frame.size.width, self.SaveTextView.frame.size.height)];


_SaveImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

问题是,我在文本视图中写的地方不在保存图像的同一位置,图像与文本稍微移动,当它应该是我已经写过的确切位置时,没有找到哪里是错误的。

任何帮助??

共有2个答案

诸嘉澍
2023-03-14

试试这个。。。

//Make Label
UILabel *_labelTimeOutName = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 428, 32)];
_labelTimeOutName.text = @"Your label text here";
_labelTimeOutName.minimumScaleFactor = 0.5;
_labelTimeOutName.numberOfLines = 1;
_labelTimeOutName.textColor = [UIColor whiteColor];
_labelTimeOutName.backgroundColor = [UIColor clearColor];
_labelTimeOutName.font  = [UIFont fontWithName:@"TrebuchetMS-Bold" size:24];
_labelTimeOutName.textAlignment = NSTextAlignmentCenter;

//add label inside a temp View
UIView *tempView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 428, 32)];
tempView.backgroundColor = [UIColor clearColor];
[tempView addSubview:_labelTimeOutName];

//render image
//CGContextRef context = UIGraphicsGetCurrentContext();
UIGraphicsBeginImageContextWithOptions(tempView.bounds.size, tempView.opaque, 0.0);
// The view to be rendered
[[tempView layer] renderInContext:UIGraphicsGetCurrentContext() ]; //context];
// Get the rendered image
//////////////////////////////////////////////////////////////////////
UIImage *FinalTextIamge = UIGraphicsGetImageFromCurrentImageContext();
//////////////////////////////////////////////////////////////////////
UIGraphicsEndImageContext();

享受吧!

龙学
2023-03-14

尝试实现此方法并在Superview上调用它:

@implementation UIView (ScreenShot)

- (UIImage *)screenShot
{
  UIGraphicsBeginImageContextWithOptions(self.bounds.size, self.opaque, 0.0);
  [self.layer renderInContext:UIGraphicsGetCurrentContext()];
  UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
  UIGraphicsEndImageContext();

  return image;
}

@end
 类似资料:
  • 问题内容: 有没有一种方法可以将JPanel(尚未显示)转换为BufferedImage? 谢谢, 杰夫 问题答案: 在BufferedImage中,您可以创建一个图形对象,可用于在JPanel上调用画图,如下所示: 您可能需要确保首先设置面板的尺寸。

  • 有没有更好的方法来转换贴图

  • 问题内容: 在StackOverflow上已经存在类似此链接的问题,并且可接受的答案是“广播”: 在我的程序中,我尝试: 不幸的是,我得到运行时错误: sun.awt.image.ToolkitImage无法转换为java.awt.image.BufferedImage 显然,投射不起作用。 问题是:将Image转换为BufferedImage的正确方法是(或存在)什么? 问题答案: 从Java游

  • 问题内容: 有哪些实用程序可获取网页图像? 基本上等同于打开页面后对其进行“截屏”。 问题答案: wkhtmltopdf和wkhtmltoimage是开源(LGPLv3)命令行工具,可使用QT Webkit渲染引擎将HTML渲染为PDF和各种图像格式。

  • 问题内容: 我环顾四周,阅读文档,没有找到任何方法或解决方案,所以我在这里问。是否有可用的软件包可用于使用Python将JPG图像转换为PNG图像? 问题答案: 为此,您始终可以使用Python图像库(PIL)。可能还会有其他包/库,但是我之前曾用过它来在格式之间进行转换。 这适用于Windows下的Python 2.7(适用于Python 2.7的Python Imaging Library 1

  • 如何将RGB彩色图像或简单的图像转换为CMY彩色图像,并提取每个组件青色(C)洋红色(M)和黄色(Y)?我的方法:-