在我的应用程序中,它允许用户将文本放在像snapchat这样的图像之上,然后允许他们将图像保存到他们的设备中。我只需将文本视图添加到图像的顶部,并使用以下代码为图像拍照:
UIGraphicsBeginImageContext(imageView.layer.bounds.size);
[imageView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage* savedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();但是当我比较图片上的文本时,与snapchat image...it中的文本有很大的不同。Snapchat的文字文字在图片的顶部明显比我的尖锐。我的看上去很像像素。另外,我根本没有压缩图像,只是像使用ALAssetLibrary那样保存图像。
谢谢
发布于 2015-04-24 20:51:58
当您使用UIGraphicsBeginImageContext,它默认为1倍的比例(即非视网膜分辨率)。你可能想:
UIGraphicsBeginImageContextWithOptions(imageView.layer.bounds.size, YES, 0);它将使用与屏幕相同的比例(可能是2倍)。最后一个参数是结果图像的比例;0表示“无论屏幕是什么”。
发布于 2015-04-24 21:37:25
如果您的imageView被缩放到屏幕的大小,那么我认为您的jpeg也将限制在该分辨率上。如果在UIGraphicsBeginImageContextWithOptions上设置比例尺不能提供足够的分辨率,则可以在屏幕外较大的图像中进行绘图。类似于:
UIGraphicsBeginImageContext(imageSize);
[image drawInRect:CGRectMake(0,0,imageSize.width,imageSize.height)];
CGContextScaleCTM(UIGraphicsGetCurrentContext(),scale,scale);
[textOverlay.layer renderInContext:UIGraphicsGetCurrentContext()];
newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();您需要将“缩放”值设置为将textOverlay视图(可能是屏幕大小)缩放到屏幕外图像大小。
或者,也许更简单,您可以从一个更大的UIImageView开始,但是将它放在另一个UIView中,以使其适合屏幕。对文本覆盖视图也做同样的操作。然后,您创建复合的代码应该可以工作,无论您为UIImageView选择什么分辨率。
https://stackoverflow.com/questions/29856929
复制相似问题