2012-10-18 45 views
2

CGImageGetWidth(workingImage.CGImage)workingImage.size.width之间有什么区别吗?第一个更快还是更安全?我知道在第二种情况下,我直接获得了价值。CGImageGetWidth(workingImage.CGImage)和workingImage.size.width是否有区别?

+0

'workingImage.size.width'对于'CGImageRef'不透明类型是否合法? – trojanfoe

+0

在这两种情况下都可以。 –

+0

虽然如何? 'CGImageRef'是**不是**对象!某种桥接?如果是这样,就有区别。 – trojanfoe

回答

5

其实他们都返回相同的结果。 CGImageGetWidth(Image.CGImage)返回位图图像宽度,Image.size.width返回UIImage宽度。如果你问安全/快速,我认为第一个会更快,因为它来自ApplicationServices框架,第二个是从UIKit框架。希望这有助于你..

+0

你的意思是用C++实现一个,另一个用Objective-C实现? – trojanfoe

+2

Apple在此(和大多数非Objective-C)情况下使用C,而不是C++。 –

+2

不,它们并不总是返回相同的结果!我只是用http://stackoverflow.com/questions/1703100/resize-uiimage-with-aspect-ratio和http://stackoverflow.com/questions/2645768/uiimage-resize-scale中描述的方法调整了UIImage的大小 - 比例,并发现CGImageGetWidth(Image.CGImage)将返回原始图像的宽度,而不是调整后的宽度。 Image.size.width但是会返回缩放的宽度。 – Tafkadasoh

3

假设imageUIImage *CGImageGetWidth(image.CGImage)返回以像素为单位的宽度,而image.size.width返回在屏幕坐标的宽度,即,像素宽度由image.scale划分,这通常是比例因子的当前显示器(大多数Retina设备上有2个,iPhone 6 Plus上有3个),但它可以是任意值,具体取决于图像的创建方式。

在性能方面,我希望他们都〜相同的,因为它们都涉及到一个objc_msgSend()image.size是一个方法调用来获取大小,image.CGImage是一个方法调用来获取CGImageRef。这些都是存储的属性,所以它们在任何情况下都不昂贵。

相关问题