首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >目标-C: snapchat是如何使图像/视频上的文本变得如此清晰而不是像素化的?

目标-C: snapchat是如何使图像/视频上的文本变得如此清晰而不是像素化的?
EN

Stack Overflow用户
提问于 2015-04-24 20:30:06
回答 2查看 771关注 0票数 1

在我的应用程序中,它允许用户将文本放在像snapchat这样的图像之上,然后允许他们将图像保存到他们的设备中。我只需将文本视图添加到图像的顶部,并使用以下代码为图像拍照:

代码语言:javascript
运行
复制
UIGraphicsBeginImageContext(imageView.layer.bounds.size);
[imageView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage* savedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

但是当我比较图片上的文本时,与snapchat image...it中的文本有很大的不同。Snapchat的文字文字在图片的顶部明显比我的尖锐。我的看上去很像像素。另外,我根本没有压缩图像,只是像使用ALAssetLibrary那样保存图像。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-24 20:51:58

当您使用UIGraphicsBeginImageContext,它默认为1倍的比例(即非视网膜分辨率)。你可能想:

代码语言:javascript
运行
复制
UIGraphicsBeginImageContextWithOptions(imageView.layer.bounds.size, YES, 0);

它将使用与屏幕相同的比例(可能是2倍)。最后一个参数是结果图像的比例;0表示“无论屏幕是什么”。

票数 2
EN

Stack Overflow用户

发布于 2015-04-24 21:37:25

如果您的imageView被缩放到屏幕的大小,那么我认为您的jpeg也将限制在该分辨率上。如果在UIGraphicsBeginImageContextWithOptions上设置比例尺不能提供足够的分辨率,则可以在屏幕外较大的图像中进行绘图。类似于:

代码语言:javascript
运行
复制
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选择什么分辨率。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29856929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档