W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
????最后我們?cè)賮碚務(wù)?code>minificationFilter和magnificationFilter
屬性??偟脕碇v當(dāng)我們視圖顯示一個(gè)圖片的時(shí)候都應(yīng)該正確地顯示這個(gè)圖片意即以正確的比例和正確的11像素顯示在屏幕上。原因如下
????不過有時(shí)候顯示一個(gè)非真實(shí)大小的圖片確實(shí)是我們需要的效果。比如說一個(gè)頭像或是圖片的縮略圖再比如說一個(gè)可以被拖拽和伸縮的大圖。這些情況下為同一圖片的不同大小存儲(chǔ)不同的圖片顯得又不切實(shí)際。
????當(dāng)圖片需要顯示不同的大小的時(shí)候有一種叫做拉伸過濾的算法就起到作用了。它作用于原圖的像素上并根據(jù)需要生成新的像素顯示在屏幕上。
????事實(shí)上重繪圖片大小也沒有一個(gè)統(tǒng)一的通用算法。這取決于需要拉伸的內(nèi)容放大或是縮小的需求等這些因素。CALayer
為此提供了三種拉伸過濾方法他們是
????minification縮小圖片和magnification放大圖片默認(rèn)的過濾器都是kCAFilterLinear
這個(gè)過濾器采用雙線性濾波算法它在大多數(shù)情況下都表現(xiàn)良好。雙線性濾波算法通過對(duì)多個(gè)像素取樣最終生成新的值得到一個(gè)平滑的表現(xiàn)不錯(cuò)的拉伸。但是當(dāng)放大倍數(shù)比較大的時(shí)候圖片就模糊不清了。
????kCAFilterTrilinear
和kCAFilterLinear
非常相似大部分情況下二者都看不出來有什么差別。但是較雙線性濾波算法而言三線性濾波算法存儲(chǔ)了多個(gè)大小情況下的圖片也叫多重貼圖并三維取樣同時(shí)結(jié)合大圖和小圖的存儲(chǔ)進(jìn)而得到最后的結(jié)果。
????這個(gè)方法的好處在于算法能夠從一系列已經(jīng)接近于最終大小的圖片中得到想要的結(jié)果也就是說不要對(duì)很多像素同步取樣。這不僅提高了性能也避免了小概率因舍入錯(cuò)誤引起的取樣失靈的問題
圖4.15 對(duì)于沒有斜線的小圖來說最近過濾算法要好很多
????總的來說對(duì)于比較小的圖或者是差異特別明顯極少斜線的大圖最近過濾算法會(huì)保留這種差異明顯的特質(zhì)以呈現(xiàn)更好的結(jié)果。但是對(duì)于大多數(shù)的圖尤其是有很多斜線或是曲線輪廓的圖片來說最近過濾算法會(huì)導(dǎo)致更差的結(jié)果。換句話說線性過濾保留了形狀最近過濾則保留了像素的差異。
????讓我們來實(shí)驗(yàn)一下。我們對(duì)第三章的時(shí)鐘項(xiàng)目改動(dòng)一下用LCD風(fēng)格的數(shù)字方式顯示。我們用簡(jiǎn)單的像素字體一種用像素構(gòu)成字符的字體而非矢量圖形創(chuàng)造數(shù)字顯示方式用圖片存儲(chǔ)起來而且用第二章介紹過的拼合技術(shù)來顯示如圖4.16。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: