前端切圖最佳實踐

本教程最終目的是大量節(jié)省切圖時間,是參考了多種方法最終選擇的方案。

傳統(tǒng)切圖往往包含著這樣幾個步驟:

  1. 切出多種倍率的圖(比如視網(wǎng)膜屏幕@2x & 普通屏幕@1x)
  2. 選取相應(yīng)的圖片合并成雪碧圖(還需量出每個圖片的定位)
  3. 圖片壓縮(比如png24 -> png8)

正常來說第一步和第二部會花費不少的時間棺榔,而使用了該方案后跟畅,將大幅減少切圖時間。

所需軟件

方法介紹

大致流程為:

  1. 使用 Photoshop 的 圖像資源 功能切出多種倍率的圖
  2. 使用 TexturePacker 的 Commond Line Tool 快速合并壓縮喇嘱,并生成定位參考

具體做法

Step 1:用 Photoshop 打開目標圖片簸搞,勾選圖像資源

這里我們用ps工具扁位,設(shè)計需要提供最高倍率的PSD,以便切出不同倍率大小的圖標趁俊。
點擊 文件 -> 生成 -> 圖像資源 這時候就啟動了圖像資源模式域仇,在這個模式下,只要對圖層重命名寺擂,就可以快速切出圖標暇务。

Step 1.1

Step 1.2

Step 2:重命名圖層(快速切圖)

重命名圖層泼掠,如果以 .png.jpg 的方式結(jié)尾垦细,則會自動幫你切出該圖層的圖片(文件夾也可以)择镇。

不過如果要用于合并,最好以 1_括改、2_腻豌、3_ 這樣的形式開頭,合并雪碧圖時就總會安裝一定的順序去排序叹谁,防止下次增加新圖時圖片合并順序被打亂饲梭。

Step 2.1

當命名后的一瞬間,圖片也就切好并放在PSD同級目錄下了

Step 2.2

如果切出的圖像直接使用焰檩,那么有時候需要切出多倍的圖憔涉,教程:新建個圖層放在最上面,并命名為:default 2x/@2x + 50% 1x/ 析苫。這里的意思是將圖片切成二倍和以倍大小兜叨,把二倍圖片放到 2x 目錄下,以 @2x 結(jié)尾衩侥;把一倍圖片縮放50%国旷,放到 1x 目錄下。

Step 2.3
Step 2.4
Step 2.5

如果切出的圖需要制作雪碧圖茫死,則這個步驟可以跳過(因為雪碧圖腳本會包含這一功能)跪但。

圖像資源還有更多高級用法:在 Photoshop CC 中生成 Web 資源

Step 3:執(zhí)行 TexturePacker 的腳本一鍵制作雪碧圖

先要下載好 Command Line Tool


Step 3.1.png

之后執(zhí)行切圖腳本。我這里一般會在項目中建立一個專門的文件夾放切圖資源峦萎,比如 index 代表首頁屡久,img 里放著圖片源文件,執(zhí)行了 build.sh 后就會爱榔,吧 img 里的圖進行合并和壓縮被环,最后放到 dist 目錄下。

Step 3.2.png

這里分別切出了一倍和二倍的圖详幽。并且附帶了一個css筛欢,這個css里包含著圖標大小以及定位信息,方便開發(fā)

Step 3.3.png

這里付下 build.sh 的腳本源碼唇聘,我會加上詳細的注釋版姑,可以根據(jù)項目的不同以此為基礎(chǔ)進行修改。

#! /bin/bash

# 一些變量雳灾,跟進實際情況去設(shè)置
# 圖片名稱
name=sprite_index_icon
# 畫面總體寬度漠酿,如果存在圖標大于這個寬度,則需要將該數(shù)值再調(diào)大
# 默認2000(相當于非視網(wǎng)膜屏幕1000)
width=2000
# 圖標間的間距谎亩,可以適當多留些間距炒嘲,以防容器比圖標大,并且直接以圖標為背景
# 默認20
shape_padding=20

mkdir temp
rm -rf dist

# 完成合并匈庭,生成的圖片放到temp里夫凸,待二次處理
TexturePacker   --format css-simple \ # 生成css文件
                --data temp/${name}{v}.css \ # css命名
                --sheet temp/${name}_tmp{v}.png \ # 圖片命名
                --variant 1:@2x \ # 切出2倍圖,以當前大小為基準阱持,以@2x結(jié)尾
                --variant 0.5: \ # 切出1倍圖夭拌,以50%大小為基準
                --texture-format png \ # 雪碧圖格式
                --shape-padding ${shape_padding} \ # 圖標與圖標間的間距為20
                --border-padding 0 \ # 無雪碧圖整體外邊距
                --pack-mode Best \ # 打包質(zhì)量最佳
                --extrude 0 \ # 無每個圖標的外邊距
                --trim-mode Trim \ # 刪除多余隱藏透明邊框
                --algorithm Basic \ # 以基礎(chǔ)的排序方式順序排序
                --basic-sort-by Name \ # 根據(jù)文件名排序
                --width ${width} \ # 設(shè)置寬度(后面會切除多余的部分)
                --force-identical-layout \ # 保證不同倍率圖像一致
                img # 源文件位置

# 二次處理。因為第一次處理為了確保圖標位置永遠一致衷咽,強制設(shè)置了寬度鸽扁,這里將第一次多余的透明寬度切除
TexturePacker   --format css-simple \
                --data temp/temp{v}.css \
                --sheet temp/${name}{v}.png \
                --variant 1:@2x \
                --variant 0.5: \
                --texture-format png8 \ # 壓縮為png8
                --force-identical-layout \
                --extrude 0 \
                --trim-mode Trim \
                temp/${name}_tmp@2x.png

# 移動到 dist 目錄
mkdir dist
mv temp/${name}.css dist
mv temp/${name}.png dist
mv temp/${name}@2x.png dist

# 刪除
rm -rf temp

想了解更多 TexturePacker Command Line Tool 的功能,直接執(zhí)行 TexturePacker --help 即可镶骗,功能可謂異常豐富桶现。

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市鼎姊,隨后出現(xiàn)的幾起案子骡和,更是在濱河造成了極大的恐慌,老刑警劉巖相寇,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件慰于,死亡現(xiàn)場離奇詭異,居然都是意外死亡唤衫,警方通過查閱死者的電腦和手機婆赠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來佳励,“玉大人休里,你說我怎么就攤上這事≈怖迹” “怎么了份帐?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長楣导。 經(jīng)常有香客問我废境,道長,這世上最難降的妖魔是什么筒繁? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任噩凹,我火速辦了婚禮,結(jié)果婚禮上毡咏,老公的妹妹穿的比我還像新娘驮宴。我一直安慰自己,他們只是感情好呕缭,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布堵泽。 她就那樣靜靜地躺著修己,像睡著了一般。 火紅的嫁衣襯著肌膚如雪迎罗。 梳的紋絲不亂的頭發(fā)上睬愤,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音纹安,去河邊找鬼尤辱。 笑死,一個胖子當著我的面吹牛厢岂,可吹牛的內(nèi)容都是我干的光督。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼塔粒,長吁一口氣:“原來是場噩夢啊……” “哼结借!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起窗怒,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤映跟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后扬虚,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體努隙,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年辜昵,在試婚紗的時候發(fā)現(xiàn)自己被綠了荸镊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡堪置,死狀恐怖躬存,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情舀锨,我是刑警寧澤岭洲,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站坎匿,受9級特大地震影響盾剩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜替蔬,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一告私、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧承桥,春花似錦驻粟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挤巡。三九已至,卻和暖如春屯掖,著一層夾襖步出監(jiān)牢的瞬間玄柏,已是汗流浹背襟衰。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工贴铜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瀑晒。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓绍坝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親苔悦。 傳聞我的和親對象是個殘疾皇子轩褐,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容