2012-10-30 56 views
1

我有一個碰撞,其僅出現在4S(未上3GS)。我懷疑它是因爲@ 2x。基本上我得到原始字節的圖像和操作。這是我的問題。iphone 4S - 的UIImage CGImage圖像尺寸

我加載下面示例代碼中提到的圖像。最後,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); 

謝謝您的幫助。

+0

Xcode將自動處理@ 2x。不需要在代碼中設置雙倍大小。 – Raptor

回答

13

sizeUIImage報告是在點,而不是像素。你需要考慮的UIImagescale財產。

換句話說,如果test.jpg是1000x1000那麼UIImage.size將報告1000x1000。如果[email protected]爲2000×2000,然後UIImage.size還將報告1000×1000。但在第二種情況下,UIImage.scale將報告2.

CGImageGetWidth以像素爲單位報告其寬度,而不是點數。

+0

這意味着,如果我沒有將比例放入因子中,那麼UIImage.size和CGImageGetWidth應該是一樣的。對? – Jailbroken

+0

不,相反。要將UIImage點轉換爲像素,您需要按比例乘以。 – rmaddy

+7

嘿下來選民,請解釋,所以我們都可以學習。 – rmaddy