2013-04-04 102 views
0

的UIImage 1:從與尺寸400×400,因而UIImage的1 @ 2×改性劑文件加載爲200x200的繪圖視網膜與非視網膜圖像

的UIImage 2將報告它的大小:從文件加載而不的@與尺寸400×400,因而UIImage的2 2倍改性劑將報告其大小爲400×400

我然後創建上面施加下面的代碼給每個

UIGraphicsBeginImageContextWithOptions(CGSizeMake(400,400), YES, 1.0); 
[image drawInRect:CGRectMake(0, 0, 400, 400)]; 
UIImage *rescaledI = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

考慮到上述從2個圖像,吾人可以期望圖像QUAL兩個產生的圖像是完全一樣的嗎? (我試圖確定是否將200x200視網膜圖像繪製到400x400非視網膜環境會降低質量,而繪製相同的圖像不會作爲視網膜圖像加載)

回答

1

只返回當前圖像的大小。

UIImage *image1 = [UIImage imagedNamed:@"myimage.png"]; 
    //access width and height like this 
    image1.size.width; 
    image1.size.height; 

UIGraphicsBeginImageContextWithOptions(CGSizeMake(image1.size.width, image1.size.height), YES, 1.0); 
[image drawInRect:CGRectMake(0, 0, image1.size.width, image1.size.height)]; 
UIImage *rescaledI = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

當然,如果你要與任何圖像,你正試圖獲得的尺寸更換image1的。一些switch語句或者if語句應該爲你做詭計。

決不硬編碼的大小/尺寸/位置等等。你應該總是扯這些信息動態地問你的圖像大小。然後,您可以更改圖像的大小,而無需擔心在應用程序中定位硬編碼大小。

+1

+1從來沒有硬編碼大小/尺寸 – BloonsTowerDefence 2013-04-04 14:02:47

+0

我的問題無關,與訪問寬度和高度。它與低層次系統如何處理具有不同比例因子的UIImage的繪製有關。 – RunLoop 2013-04-04 14:12:26

1

的圖像總是400個* 400像素:不同的是,在視網膜顯示400×400像素覆蓋更小的空間,也就是正好一半(200個* 200核心圖形點)。如果您沒有對圖像應用任何轉換,將保持完全一樣。

你寫的代碼呈現的圖像作爲是因爲你重寫裝置比例因子和將其設置爲始終爲1(1個像素1點)。 如果您希望圖像在視網膜和非視網膜設備上覆蓋相同數量的屏幕,則應使用兩倍大的圖像。

+0

我寫的代碼不會使它在視網膜顯示上大一倍,因爲我將比例設置爲1.0。 – RunLoop 2013-04-04 14:10:24

+0

你是對的,我編輯了我的答案。 – HermioneGreen 2013-04-04 14:37:54