2010-09-17 100 views
1

我想我錯過了這裏真正基本的東西。如果我這樣做有法律URL /路徑,我知道存在:NSImage大小是錯誤的

NSImage* img = [[NSImage alloc] initWithContentsOfFile:[[selectedItem url] path]]; 
NSLog(@"Image width: %d height: %d", [img size].width, [img size].height); 

然後我得到報告給寬度爲-2080177216,高度爲0。雖然我知道,寬度實際上是50和控制檯高度爲50.我嘗試調用isValid並返回YES,並且我還嘗試檢查第一個表示的大小,並返回相同的錯誤值。圖像未能正確加載?

回答

9

size方法返回NSSize,一個結構,其widthheight成員是float類型。你把它們當作int。使用%f,一切都應該沒問題。

+1

+1你不希望有一個'%anything'替換會記錄正確的東西嗎? – 2010-09-17 21:40:37

+1

@Dave那太容易了! – walkytalky 2010-09-17 21:55:26

+0

謝謝。是的,應該有類似於C#的東西! – evilfred 2010-09-17 22:00:09

3

這有幫助嗎?

setSize: 

設置圖像的寬度和高度。

- (void)setSize:(NSSize)aSize 

討論:

可以使用前一個NSImage中對象的大小必須被設置。如果在添加圖像表示時尚未設置圖像的大小,則尺寸取自圖像表示的數據。對於EPS圖像,尺寸取自圖像的邊界框。對於TIFF圖像,大小取自ImageLength和ImageWidth屬性。

在使用NSImage後,有效調整圖像的大小。更改大小會使其所有緩存失效並釋放它們。當下一個圖像合成時,選定的表示將自己繪製在離屏窗口中以重新創建緩存。

可用性 適用於Mac OS X v10.0及更高版本。 另請參見

+0

我試着從圖像代表檢索pixelsWide和pixelsHeight,並使用它們來創建一個新的尺寸並將其設置在NSImage上。但是,在NSImage上調用setSize爲50x50之後,如果檢查大小,我仍然可以返回它的大小! – evilfred 2010-09-17 21:38:18

+2

'initWithContentsOfFile'將設置大小。問題是使用'%d'記錄。 – walkytalky 2010-09-17 21:41:35