我已成功吸引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。
如何通过编辑保存原始尺寸的图像?
答案 0 :(得分:1)
首先将drawScreen.frame.size.width
和drawScreen.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();