1

我的崩溃只发生在 4S 上(不在 3GS 上)。我怀疑它是因为@2x。基本上我得到图像的原始字节并进行操作。这是我的问题。

我加载了下面示例代码中提到的图像。最后,uiWidth 应该是 2000,cgwidth 应该是 2000。对吗?(如果图像是从相机胶卷加载的,它仍然是真的吗?或者它的自动缩放和 uiWidth 将是 4000?)

//test.jpg is 2000x 1500 pixels.
NSString *fileName = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"jpg"];
UIImage *image = [UIImage imageWithContentsOfFile:fileName];

int uiWidth = image.size.width;

CGImageRef cgimg = image.CGImage;

int cgWidth = CGImageGetWidth(cgimg);

谢谢您的帮助。

4

1 回答 1

13

size报告的单位是UIImage点,而不是像素。您需要考虑scale.UIImage

换句话说,如果test.jpg是 1000x1000 那么UIImage.size将报告 1000x1000。如果test@2x.png是 2000x2000,那么UIImage.size也会报告 1000x1000。但在第 2 种情况下,UIImage.scale将报告 2。

CGImageGetWidth以像素为单位报告其宽度,而不是点数。

于 2012-10-30T03:01:48.393 回答