【问题标题】:Generating hi-resolution image from transformed UIImageViews从转换后的 UIImageView 生成高分辨率图像
【发布时间】:2013-03-28 16:24:49
【问题描述】:

我在从转换后的 UIImageView 生成高分辨率图像时遇到了麻烦。 我有一个画布视图,其中包含由用户手指转换的多个视图。 所以我尝试根据它们的变换来渲染这些视图的图像。 这是我用于视图的代码快照。

CGSize canvasSize = CGSizeMake(HIRES_WIDTH, HIRES_WIDTH);
CGAffineTransform scaleTransform = CGAffineTransformMakeScale(HIRES_WIDTH / canvasView.frame.size.width, HIRES_WIDTH / canvasView.frame.size.width);

UIGraphicsBeginImageContext(canvasSize);
CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSaveGState(context);
CGPoint center = imageView.center;
CGSize size = imageView.bounds.size;
CGRect frame = CGRectMake(center.x - size.width, center.y - size.height, size.width, size.height);

CGAffineTransform transform = CGAffineTransformIdentity;
transform = CGAffineTransformTranslate(transform, size.width / 2, size.height / 2);
transform = CGAffineTransformConcat(transform, photoImageView.transform);
transform = CGAffineTransformConcat(transform, scaleTransform);
CGContextConcatCTM(context, transform);

[photoImageView.image drawInRect:frame];

CGContextRestoreGState(context);

UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

但我在最终图像上得到了偏移差异。 任何建议将不胜感激。

谢谢。

【问题讨论】:

  • HIRES_WIDTH? HIRES_WIDTH?

标签: iphone objective-c uiimage cgcontext cgaffinetransform


【解决方案1】:

尝试改变这一点:

CGRect frame = CGRectMake(center.x - size.width, center.y - size.height, size.width, size.height);

到这里:

CGRect frame = CGRectMake(center.x - size.width / 2, center.y - size.height / 2, size.width, size.height);

【讨论】:

  • 这对我没有帮助。偏移量的差异是根据 UIImageView 变换的比例因子。
猜你喜欢
  • 1970-01-01
  • 2012-10-12
  • 2014-11-20
  • 2011-09-30
  • 1970-01-01
  • 2016-05-14
  • 1970-01-01
  • 2017-07-01
  • 2013-08-25
相关资源
最近更新 更多