2013-03-27 153 views
0

我可以在UIViewdrawScreeniPhone手绘图像并保存高质量编辑图像

-(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

尺寸为300×300

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

导致图像的大小也是300×300。

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

回答

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(); 
1

首先简单地将drawScreen.frame.size.widthdrawScreen.frame.size.height替换为原始图像的大小。首先,您将需要创建一个新的UIView实例,该实例是图像的大小(并将图像添加到其中)。然后你需要调整和重绘你的艺术。根据您存储图像的方式,您需要将坐标乘以计算得出的因子,或者渲染一些东西然后放大。无论采用哪种方式,您都会在新的UIView之上添加放大的图形作为子视图。然后使用UIGraphicsGetCurrentImageContext

您需要阅读this documentation

此外,您可能会发现this question有所帮助。

+0

不,它不起作用。 正如我告诉你,我正在标记图像部分,就像用自由手圈或线条指出图像中的某些东西。不同尺寸的绘图画面和图像大小会导致绘图位置问题。 – 2013-03-27 06:53:24

+0

我真正想要的是 向用户显示640x640图像(不滚动)。 用户在此图上画图 ,然后用绘图保存640x640图像。 – 2013-03-27 06:58:00

+0

我在这方面花了很多时间,没有找到任何教程,例子等 – 2013-03-27 06:59:44