我花了幾個小時在谷歌搜索這個答案和嘗試的代碼片段,但我一直沒有找到一。我也認識到,這是一個很多次被問到的問題,但我不知道現在還有什麼要做。顯示一個640x852像素的500x500像素圖像NSImageView沒有任何種類或模糊(OS X上的Swift)
我可以從Met Offices的DataPoint API訪問500x500像素的降雨雷達圖像,覆蓋英國。它們必須以640x852像素區域顯示(NSImageView,我目前將縮放屬性設置爲獨立軸),因爲這是爲圖像覆蓋的邊界生成的地圖的正確大小。我想使用最近鄰居算法並以別名格式以640x852的放大尺寸顯示它們。這可以通過轉到Image> Image Size ...並將resample設置爲最近鄰居(硬邊緣)來實現。源圖像應保持在500x500像素,我只想在更大的視圖中顯示它們。
我已經嘗試將NSImageView.layer的magnificationFilter設置爲全部三個不同的kCAFilter選項,但這沒有什麼區別。我也嘗試將NSImageView.layer的shouldRasterize屬性設置爲true,這也沒有效果。圖像總是最終被平滑或反鋸齒,這是我不想要的。
最近來自C#,可能有一些我錯過了,因爲我沒有很長時間在Swift編程。在C#中(使用WPF),我可以通過將圖像元素的BitmapScalingOptions設置爲NearestNeighbour來獲得我想要的。總之,我想用一個像素化的形式在一個640x852像素的NSImageView中顯示一個500x500像素的圖像,而不需要使用Swift進行任何平滑處理(不管顯示是否是視網膜)。感謝你給與我的幫助。
下面是實際結果(截圖從5K的iMac): 這是通過簡單的設置上NSImageSource圖像屬性用的tableViewSelectionDidChange事件創建我的NSTableView的用於選擇時間顯示的圖像,使用:
let selected = times[timesTable.selectedRow]
let formatter = NSDateFormatter()
formatter.dateFormat = "d/M/yyyy 'at' HH:mm"
let date = formatter.dateFromString(selected)
formatter.dateFormat = "yyyyMMdd'T'HHmmss"
imageData.image = NSImage(contentsOfFile: basePathStr +
"RainObs_" + formatter.stringFromDate(date!) + ".png")
下面是我希望它看起來像(忽略背景和裁剪出的部分)。如果您保存的圖像你自己,你會看到它是像素化和別名:
下面是信號源顯示在地圖(源只在一NSImageView放在包含地圖的另一個NSImageView的頂部):
您應該發佈圖像源,實際和期望的結果。 –
不要忘記顯示使用的代碼 –
@LeoDabus完成! – HenryHunt