前言

周末在微博上看到@周楷雯Kevin说起CALayer抗锯齿的问题

具体做法是:layer.allowsEdgeAntialiasing = true

想起了很久以前也遇到过类似的问题 那时候要做一个类贴纸的应用 理所当然会遇到贴纸缩放和旋转的问题 所以锯齿的问题也是需要解决的 但是那时候是iOS4,5的时代 压根没有上面说的allowsEdgeAntialiasing这个东西(这个东西iOS7才公开 不过iOS6据说也可以用 但是黑科技嘛..你懂的)

所以当时求助了万能的stackoverflow 得到了一个非常简约而不简单的方法 就是我在微博上说的 只要把需要显示的图片留一个像素的透明边 就搞定了

方法

方法比较简单 我写成了一个UIImage的Category方法 然后一直尘封在我的工具库中好几年(遇到这个问题我才想起来)- (UIImage *)antiAlias

{

CGFloat border = 1.0f;

CGRect rect = CGRectMake(border, border, self.size.width-2*border, self.size.height-2*border);

UIImage *img = nil;

UIGraphicsBeginImageContext(CGSizeMake(rect.size.width,rect.size.height));

[self drawInRect:CGRectMake(-1, -1, self.size.width, self.size.height)];

img = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

UIGraphicsBeginImageContext(self.size);

[img drawInRect:rect];

UIImage* antiImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return antiImage;

}

先来看看实际的效果

可以看到旋转的时候若不做任何处理 确实是会有明显的锯齿 而使用透明边的方法 或者设置allowsEdgeAntialiasing 都可以消除锯齿

接下来看看这两种方法的性能比较 测试方法是在我的iPhone 5S上接连对500个UIImageView进行旋转 对比帧数 其结果如下

结果表明 allowsEdgeAntialiasing的性能还是比透明边的方式要差一点 所以…如果你的应用要支持iOS6- 可以参考透明边的方法 唯一的缺点是显示出来会比原来小那么一点点(我的做法是直接cut掉1px的边 当然你也可以直接在图像外面加1px的透明边)

如果你的应用仅支持iOS7 推荐使用allowsEdgeAntialiasing来设置 简单方便咯 如果性能上觉得吃力的话 可以再考虑透明边的方法

小结

文中的demo可以在这里找到

测试的方法也许不太严谨(也是临时起意写的这篇 所以并没有花太多时间) 如果有错误 请大家提出来

java 图片怎么设置抗锯齿,图片变形的抗锯齿处理方法相关推荐

  1. html如何防止内部撑开,CSS3 流式图片的设置,避免图片撑开所在的容器(附样例)...

    CSS3 流式图片效果在许多的图片网站中我们有看到了,下文我们一起来看一篇关于CSS3 流式图片的设置,避免图片撑开所在的容器(附样例)例子,具体的一起来看看. 一般来说,图片占用的空间取决于其内容, ...

  2. 从Matlab中导出不含白边的图片及设置画布尺寸及图片位置

    1.设置画布尺寸及图片位置 figure; %创建figure1窗口 set(gcf,'position',[15 15 1800 600]);%这里设置画布长宽比为3:1,由后面两个值决定,但这两个 ...

  3. css中设置文字环绕图片,css 设置文字环绕图片

    要达到的效果是可以环绕图片 最近做的一个项目,有一个具体的要求,是要完成文字对图片的环绕效果,其实不是很难:来做一份随笔,记录一下该做法,大家有什么好的实现方式,也可以互相探讨一下. 这是我自己写的一 ...

  4. python画布添加背景图片_Python 设置 Canvas 背景图片且支持全屏显示

    图1 全屏显示图片 由于 PhotoImage 若没有被引用,便会自动销毁,所以需要显示的引用它: from tkinter import Tk, Canvas from PIL import Ima ...

  5. html图片怎么设置悬浮效果,图片漂浮效果js实现

    当鼠标在图片上方时,图片停止漂浮,点击关闭按钮可隐藏图片. var xPos=0; var yPos=0; var directionX=true; var directionY=true; var ...

  6. Java虚拟机如何设置环境变量_Java虚拟机配置环境变量的方法

    Java虚拟机是一款功能强大的虚拟机,是抽象的计算机,是Java语言底层实现的基础,Java语言在不同平台运行不需要重新编译.Java虚拟机(JVM)是Java Virtual Machine的缩写, ...

  7. html给按钮设置背景,设置按钮背景图片(HTML-CSS)

    很多人提交表单时都喜欢用一个图片来作为提交按钮,大多数人可能用JS去操作表单的提交,即当用户点击这个图片时响应一个JS来提交表单.其实还有一种方法,就是直接设置SUBMIT按钮的图片背景.设置它的图片 ...

  8. html网页左侧背景,CSS设置html网页背景图片 CSS设置网页背景颜色

    CSS设置网页背景图片 CSS设置网页背景颜色技术教程篇 本篇DIVCSS5以布局思想介绍使用CSS设置实现网页背景技巧为主,希望对DIV CSS爱好者有帮助.通常对网页设置背景直接对body设置背景 ...

  9. 苹果浏览器分辨率css,苹果(Safari)浏览器的图片width设置为100%但实际显示为980px改成的问题方法...

    最近在做一个页面时,发现在 iPad 的 Safari 浏览器中背景显示不全,定位到该 div 后发现所指定 css 的宽度为 100% : 到百度搜索后发现,safari 中 viewport 默认 ...

  10. CSS设置html网页背景图片 CSS设置网页背景颜色

    http://www.divcss5.com/jiqiao/j768.shtml CSS设置网页背景图片 CSS设置网页背景颜色技术教程篇 本篇DIVCSS5以布局思想介绍使用CSS设置实现网页背景技 ...

最新文章

  1. 基于网络监听方式的电子邮件实现基础
  2. dropout是什么?为什么dropout管用?测试集上是否需要使用dropout?说明为什么神经网络中的dropout可以作为正则化?
  3. Android 获取屏幕尺寸与密度
  4. OpenGL键盘消息实例
  5. 案例_文件下载_代码实现
  6. linux下多线程之pthread_detach(pthread_self())
  7. 【JAVA基础篇】彻底搞懂拆箱装箱
  8. lsoci mysql_flask项目从sqlite3升级的mysql数据库
  9. android布局时长分析,Android性能优化:布局优化 详细解析(含、、讲解 )
  10. Equinox MANIFEST.MF 中文处理 Bug
  11. 17. Contoller(2)
  12. 重磅预告!企业上云的正确姿势
  13. Linux监控之系统性能
  14. 聚类分析K均值算法讲解
  15. 系统找不到指定路径,网络编程
  16. luoqu语音机器人_电话语音机器人的核心技术是什么?
  17. css3 实现星空动画 -- 星星闪烁 - 流星划过 - 月亮上升
  18. Excel中ISEVEN函数用法之判断数值奇偶性
  19. 读《禅与摩托车维修艺术》
  20. 第二届“长安杯”电子数据竞赛试题wp

热门文章

  1. Scarlett~スカーレット 有感,新的价值观
  2. taptap领取礼包显示服务器繁忙,原神taptap预约奖励领取教程 taptap预约奖励怎么领取...
  3. html新建文件夹,javascript实现新建文件夹的功能
  4. 吉他音阶训练——问题解答
  5. 吉他入门教程之吉他音阶训练——练习方法
  6. 为什么浏览器全面禁用三方 Cookie
  7. 客户端修改服务器的cookie,客户端与服务器cookie
  8. 几种常用英文信件范文
  9. 高效算法:竞赛、应试与提高必修128例
  10. B站网页端下载视频,直接浏览器下载或者Java实现下载