CGImageGetWidth(workingImage.CGImage)和workingImage.size.width之间有什么区别吗?

Tom*_*ulc 3 image-processing objective-c quartz-graphics uiimage ios

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

rel*_*wer 5

实际上它们都返回相同的结果.CGImageGetWidth(Image.CGImage)返回Bitmap图像宽度,Image.size.width返回UIImage宽度.如果你问安全/快速,我认为第一个会更快,因为它来自ApplicationServices框架,第二个来自UIKit框架.希望这可以帮助你..

  • 不,他们并不总是返回相同的结果!我刚刚使用http://stackoverflow.com/questions/1703100/resize-uiimage-with-aspect-ratio和http://stackoverflow.com/questions/2645768/uiimage-resize-scale中描述的方法调整了UIImage的大小. -proportion,发现CGImageGetWidth(Image.CGImage)将返回原始图像的宽度,而不是调整大小的宽度.但是,Image.size.width返回缩放的宽度. (4认同)
  • Apple在这个(和大多数非Objective-C)案例中使用C,而不是C++. (2认同)

Nic*_*ood 5

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

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