0

我能够成功地利用UIView例如drawScreen

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

我已经添加了我UIImageView作为上面的子视图,UIView例如drawScreen,这样看起来你正在绘制图像。

现在我想用绘图保存图像,我也使用了这部分

UIGraphicsBeginImageContext(CGSizeMake(drawScreen.frame.size.width, drawScreen.frame.size.height));

问题:
问题是生成的保存图像尺寸过大drawScreen,而我的原始图像质量很好。例如,

大小drawScreen为 300x300

我的原始图像的大小是 640x640

结果图像的大小也是 300x300。

如何通过编辑保存原始大小的图像?

4

2 回答 2

1

首先简单地替换drawScreen.frame.size.width原始drawScreen.frame.size.height图像的大小。

首先,您需要创建一个UIView与图像大小相同的新实例(并将图像添加到其中)。然后,您将需要缩放并重新绘制您的艺术作品。根据您存储图像的方式,您需要将坐标乘以计算出的因子,或者渲染一些东西然后放大它。无论哪种方式,您都会将放大的图形作为子视图添加到新的UIView. 然后使用UIGraphicsGetCurrentImageContext.

您将需要阅读此文档

此外,您可能会发现这个问题有些帮助。

于 2013-03-27T06:40:58.507 回答
0

我可以使用编辑保存原始大小的图像UIScrollView。我已禁用单指滚动,UIScrollView仅允许两根手指滚动并使用单指绘制图像。我使用以下代码保存原始大小的图像

UIGraphicsBeginImageContext(self.scrollView.contentSize);
 {
     CGPoint savedContentOffset = self.scrollView.contentOffset;
     CGRect savedFrame = self.scrollView.frame;

     self.scrollView.contentOffset = CGPointZero;
     self.scrollView.frame = CGRectMake(0, 0, self.scrollView.contentSize.width, self.scrollView.contentSize.height);

     [self.scrollView.layer renderInContext: UIGraphicsGetCurrentContext()];
     UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
     UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);
     self.scrollView.contentOffset = savedContentOffset;
     self.scrollView.frame = savedFrame;
 }
 UIGraphicsEndImageContext();
于 2013-03-27T09:32:24.733 回答