像素对齐的概念

在iOS中,有一个概念叫做像素对齐,如果像素不对齐,那么在GPU渲染时,需要进行插值计算,这个插值计算的过程会有性能损耗。
在模拟器上,有一个选项可以把像素不对齐的部分显示出来。

逻辑像素与物理像素

在iOS设备上,有point(逻辑像素)的概念,以及pixel(物理像素)的概念。
在编程序时,用的是point,实际渲染时用的是pixel。一个point可以对应多个pixel。
point和pixel的比例是可以通过[[UIScreen mainScreen] scale]来制定。

UIImage的scale概念

If you load an image from a file whose name includes the @2x modifier, the scale is set to 2.0. You can also specify an explicit scale factor when initializing an image from a Core Graphics image. All other images are assumed to have a scale factor of 1.0.

image也有size的概念。

This value reflects the logical size of the image and takes the image’s current orientation into account. Multiply the size values by the value in the scale property to get the pixel dimensions of the image.

就是说image的size和image和scale相乘,得到物理像素的大小。

问题

那么像素不对齐指的是物理像素(pixel)和逻辑像素(point)对齐呢?

实验

使用300*225像素的png图片。分别使用不同的方法load到内存中,得到不同的size和scale,然后放在不同size的imageview里。使用color misaligned images来判定是否像素对齐。
这里模拟器使用的iPhone 6,屏幕的 scale是2。

image size image scale imageview Size 是否misalign
300,225 1 300,225
300,225 1 150,112.5
150,112.5 2 150,112.5
150,112.5 2 75,56.25

部分代码

    NSLog(@"screen scale is %f",[[UIScreen mainScreen] scale]);UIImage *image = [UIImage imageNamed:@"test.png"];NSLog(@"image size %@, scale %f ", [NSValue valueWithCGSize:image.size], image.scale);UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
//    imageView.frame = CGRectMake(50, 100, imageView.bounds.size.width * 2/3, imageView.bounds.size.height * 2/3);imageView.frame = CGRectMake(50, 100, imageView.bounds.size.width, imageView.bounds.size.height);NSLog(@"imageView frame %@", [NSValue valueWithCGRect:imageView.frame]);[self.view addSubview:imageView];

结论

  1. 所谓的像素对齐,指的是物理像素对齐。
  2. 如果是2x的图像,放在3x的屏幕上(6sp),也会发生像素不对齐的情况。

转载于:https://www.cnblogs.com/huahuahu/p/iOS-kai-fa-zhi-tu-pian-fen-bian-lu-yu-xiang-su-dui.html

iOS开发之图片分辨率与像素对齐相关推荐

  1. iOS开发中图片的一些处理操作(背景色,透明度,合成,大小)

    之前写过一篇有关更换图片背景色的文章,今天遇到一块儿了,就干脆重新整理一下了.iOS开发中常用的对图片的处理操作: 一.更换图片的背景颜色 /** * 改变图片背景为白色 * * @param ima ...

  2. 相机分辨率、图片分辨率、像素及图片尺寸关系的思考

    以前没有仔细思考过这个问题,相关概念一直有些模糊,这里整理一下我的思考及学习所得,供大家参考,欢迎批评指正. 概念 相机分辨率 相机分辨率是由相机内的CCD或CMOS上光敏元件的总数决定的.以CCD相 ...

  3. ios开发 微博图片缩放处理错误_H5响应式开发必会之Viewport(视窗)详解

    什么是 Viewport?viewport 是用户网页的可视区域. viewport 翻译为中文可以叫做"视区". 手机浏览器是把页面放在一个虚拟的"窗口"(v ...

  4. 【ios开发】图片拉伸

    最近在做一个项目 其中要自己定制一个View 如图: 但是美工给了我的图片尺寸却是不一样的. 分别是599*80  26*61 于是就成了这样的效果. 很明显的发现取消四周不对劲. 于是我就去找美工姐 ...

  5. iOS开发:iPhone分辨率指南

    转载自:http://blog.csdn.net/cuibo1123/article/details/39405973 ------------------------- 原文及翻译文本 Points ...

  6. iOS开发-简单图片背景替换 实现抠图效果

    之前好奇, 想实现这样的功能   -----> iOS图像处理-(jpg去除白色背景) 把一张图片(.jpg)的白色背景抠掉,转成.png 格式的有alpha通道的透明图. 原图黑白分明, 像这 ...

  7. iOS开发-简单图片背景替换(实现抠图效果)

    之前好奇, 想实现这样的功能   -----> iOS图像处理-(jpg去除白色背景) 把一张图片(.jpg)的白色背景抠掉,转成.png 格式的有alpha通道的透明图. 原图黑白分明, 像这 ...

  8. IOS开发之——图片的内存优化

    一 概述 创建Image的方式有两种: UIImage *image=[UIImage imageNamed:imageName]-内存由系统管理 UIImage *image=[UIImage im ...

  9. iOS开发-改变图片的颜色

    在日常开发中有一个小技巧来改变图片颜色,很是方便,比如UI一开始给你的图片颜色是白色,后面要换成蓝色,这时候,你懒的再去弄一张一摸一样只是颜色不一样的图片加进来,这时候这个小技巧就起到了作用,找UI切 ...

最新文章

  1. 使用modernizr.js检测浏览器对html5以及css3的支持情况
  2. Vlan 4096的限制原因
  3. SAP MM 采购申请中的物料组字段改成Optional
  4. Object类的用法(三)
  5. python爬取全国社会组织查询网站
  6. MyBatis-14MyBatis动态SQL之【foreach】
  7. 关于Notes更改internet密码所需的缓存时间
  8. SAP ui5 resize handler
  9. 你家猫砸东西是不是也专挑贵的砸?
  10. 2020年中国工业品B2B行业研究报告
  11. (67)Verilog HDL模块条件例化
  12. 物联网卡设置_物联网卡该怎样设置和使用——酷易充物联
  13. 如何从零开始学习Java语言
  14. 〖毕业季|进击的技术er〗其他人都在缅怀青春、告诉你如何拿到 offer 、提高自己的技术栈、做未来规划路线,我偏要反其道而行、告诉你们一个不一样的技术er的职场成长。
  15. BI 工具常用图表用法
  16. cesium之三维漫游飞行效果实现篇(转)
  17. vitrualbox虚拟机64位安装报错解决
  18. 拥有十多年欧美金融行业经验,他曾任硅谷Top2互联网金融公司Prosper核心高管,突然回国,究竟是为何?
  19. Linux学习(三):管道相关命令
  20. LeetCode 695. 岛屿的最大面积【c++/java详细题解】

热门文章

  1. 【双系统下给ubuntu18.04扩容】
  2. SDUT-2144 图结构练习——最小生成树
  3. mesh三维画图[matlab]
  4. mysql如何配置hbm.xml_配置数据库映射文件hbm.xml
  5. 吉林大学计算机科学与技术学院推免,2017吉林大学计算机科学与技术大学生推免夏令营...
  6. android 自定义皮肤,Android Studio 自定义皮肤主题和背景
  7. winform模拟登陆网页_winform跳转到制定的网页并自动实现登陆功能
  8. 第二十一讲 特征值和特征向量
  9. LNOI2014 LCA
  10. MySql基础入门-mysql体系结构