iPhone免费手绘图像并保存高品质的编辑图像

时间:2013-03-27 04:46:18

标签: iphone uiview uiimageview drawing

我已成功吸引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,而我的原始图像质量很好。     e.g,

drawScreen的尺寸为300x300

原始图像的尺寸为640x640

所得图像的尺寸也是300x300。

如何通过编辑保存原始尺寸的图像?

2 个答案:

答案 0 :(得分:1)

首先将drawScreen.frame.size.widthdrawScreen.frame.size.height替换为原始图片的大小。

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

您需要阅读this documentation

另外,您可能会发现this question有点帮助。

答案 1 :(得分: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();