【问题标题】:iPhone free hand drawing over image and save high quality edited imageiPhone免费手绘图像并保存高质量的编辑图像
【发布时间】:2013-03-17 03:13:26
【问题描述】:

我可以成功地使用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。

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

【问题讨论】:

    标签: iphone uiview uiimageview drawing


    【解决方案1】:

    我可以使用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();
    

    【讨论】:

      【解决方案2】:

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

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

      你会想阅读this documentation

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

      【讨论】:

      • 不,它不会工作。正如我告诉你的那样,我正在标记图像部分,例如用徒手圆圈或线条在图像中指向某些东西。不同尺寸的画屏和图像尺寸会产生绘图位置问题。
      • 我真正想要的是向用户显示 640x640 图像(不滚动)。用户在此图像上绘图,然后使用绘图保存 640x640 图像。
      • 我在这方面花了很多时间,但没有找到任何教程、示例等
      猜你喜欢
      • 1970-01-01
      • 2013-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      相关资源
      最近更新 更多